ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:yousukei VBAでのチェックボックスの自動作成
困り度:
  • 困っています
今、ワークシートに入れてあるリストを、インプットボックスでワークシートで指定して読み込ませて処理しています。
今後、複数のリスト(ワークシート)を指定する為、ワークシートの数(ワークシート名も入力して)だけユーザーフォームに自動でチェックボックスを作成するマクロを作りたいと考えています。
ワークシートの数の取得、ワークシート名の取得方法、チェックボックスの値の取得方法はわかりましたが、ワークシートの数だけ、チェックボックスを適当なサイズで自動生成する方法がわからず困っています。
長いコードになると思いますが、よろしければコードも含めて教えてください、よろしくお願いします。
質問投稿日時:08/04/05 15:45
質問番号:3924291
この質問に対する回答は締め切られました。
最新から表示回答順に表示良回答のみ表示

回答

 

回答者:onlyrom 大河ドラマ「篤姫」を見てましたので遅くなりました。
地元ゆえ。。。(^^;;;

やっぱい、チェックボックスがよかみたいですねぇ。
 ↑
 方言
 
と、関係ないことは置いといて。。。


今回のコードはコントロール追加の方法の確認ですから、
新しいブックにシート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
'-------------------------------------------------

ユーザーフォーム表示領域云々は、予め大き目のフォームを作っておくとしても
シート枚数が多い場合は見栄え良くするためにチェックボックスを複数列で表示したい場合があるでしょうが、
それは自分で考えてみてください。
そして、分からないときはまた遠慮なく質問してください。

やる気のある人は、応援しなければ。。(^^;;;

以上。
 
種類:回答
どんな人:一般人
自信:自信あり
回答日時:08/04/06 21:37
回答番号:No.2
この回答へのお礼今、仕事から帰ってきたので、試してみました。質問も仕事中にやってましたw これは、、、感動ですね。こんな短いコードで実現できるとは、知識の差としか言いようがないですね。VBA暦2週間なので偉そうな事言えませんが、連日夜更かししてやってたので多少知ったつもりでした。恐れ入りました。
そういえば、前にも回答していただいた方みたいですね。本当に助かっております。m(・_・)m (やっばいってまずいの事ですかね??)

回答

良回答20pt

回答者:onlyrom コントロールを自動作成するときは次のようなちょと面倒なことを
考慮しなければいけなくなります。

ユーザーフォームのサイズ
チェックボックスの配置する位置、サイズ
何列に配置するか、その場合の位置。
一番の問題はシートの数が多くなってユーザーフォーム領域に配置できなくなったらどうするか、等々。

これらを考えると、質問の処理では項目がリスティングされるような
コンボボックスかリストボックスの使うのが適していると思いますが。

「うんにゃ、どうしてもチェックボックスの自動作成だぁ〜」

ということなら、上記の問題点を考慮していない簡単なサンプルをアップします。

ま、コードはマクロ記録をとれば大体はわかります。
ただ、ユーザーフォームへコントロールを配置してもマクロ記録はとれませんから、
シート上にチェックボックスを配置するマクロ記録をとってください。

以上。
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/04/06 16:25
回答番号:No.1
この回答へのお礼回答ありがとうございます。
敷居の高い質問だったとは重々承知していました。
今回、シートの数が多くなってきて表示できなくなる等の問題は、ある程度、形ができてから回避していこうと考えています。またそれが楽しいので。
ですのであえて、「うんにゃ、どうしてもチェックボックスの自動作成だぁ〜」でお願いできないでしょうか?。よろしくお願いします。
 
最新から表示回答順に表示良回答のみ表示