• ベストアンサー

VBAでのチェックボックスの自動作成

今、ワークシートに入れてあるリストを、インプットボックスでワークシートで指定して読み込ませて処理しています。 今後、複数のリスト(ワークシート)を指定する為、ワークシートの数(ワークシート名も入力して)だけユーザーフォームに自動でチェックボックスを作成するマクロを作りたいと考えています。 ワークシートの数の取得、ワークシート名の取得方法、チェックボックスの値の取得方法はわかりましたが、ワークシートの数だけ、チェックボックスを適当なサイズで自動生成する方法がわからず困っています。 長いコードになると思いますが、よろしければコードも含めて教えてください、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.1

コントロールを自動作成するときは次のようなちょと面倒なことを 考慮しなければいけなくなります。 ユーザーフォームのサイズ チェックボックスの配置する位置、サイズ 何列に配置するか、その場合の位置。 一番の問題はシートの数が多くなってユーザーフォーム領域に配置できなくなったらどうするか、等々。 これらを考えると、質問の処理では項目がリスティングされるような コンボボックスかリストボックスの使うのが適していると思いますが。 「うんにゃ、どうしてもチェックボックスの自動作成だぁ~」 ということなら、上記の問題点を考慮していない簡単なサンプルをアップします。 ま、コードはマクロ記録をとれば大体はわかります。 ただ、ユーザーフォームへコントロールを配置してもマクロ記録はとれませんから、 シート上にチェックボックスを配置するマクロ記録をとってください。 以上。

yousukei
質問者

お礼

回答ありがとうございます。 敷居の高い質問だったとは重々承知していました。 今回、シートの数が多くなってきて表示できなくなる等の問題は、ある程度、形ができてから回避していこうと考えています。またそれが楽しいので。 ですのであえて、「うんにゃ、どうしてもチェックボックスの自動作成だぁ~」でお願いできないでしょうか?。よろしくお願いします。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

大河ドラマ「篤姫」を見てましたので遅くなりました。 地元ゆえ。。。(^^;;; やっぱい、チェックボックスがよかみたいですねぇ。  ↑  方言   と、関係ないことは置いといて。。。 今回のコードはコントロール追加の方法の確認ですから、 新しいブックにシート5、6枚を作り、下記を実行してください。 '------------------------------------------------ Private Sub UserForm_Initialize()  Dim s As Integer  Dim myCheckBox As Control  For s = 1 To Sheets.Count    Set myCheckBox = Me.Controls.Add("Forms.CheckBox.1")    With myCheckBox      .Height = 20      .Width = 80      .Left = 10      .Top = (s - 1) * .Height + 10      .Caption = Sheets(s).Name    End With  Next s End Sub '------------------------------------------------- ユーザーフォーム表示領域云々は、予め大き目のフォームを作っておくとしても シート枚数が多い場合は見栄え良くするためにチェックボックスを複数列で表示したい場合があるでしょうが、 それは自分で考えてみてください。 そして、分からないときはまた遠慮なく質問してください。 やる気のある人は、応援しなければ。。(^^;;; 以上。  

yousukei
質問者

お礼

今、仕事から帰ってきたので、試してみました。質問も仕事中にやってましたw これは、、、感動ですね。こんな短いコードで実現できるとは、知識の差としか言いようがないですね。VBA暦2週間なので偉そうな事言えませんが、連日夜更かししてやってたので多少知ったつもりでした。恐れ入りました。 そういえば、前にも回答していただいた方みたいですね。本当に助かっております。m(・_・)m (やっばいってまずいの事ですかね??)

すると、全ての回答が全文表示されます。

関連するQ&A