
今、ワークシートに入れてあるリストを、インプットボックスでワークシートで指定して読み込ませて処理しています。
今後、複数のリスト(ワークシート)を指定する為、ワークシートの数(ワークシート名も入力して)だけユーザーフォームに自動でチェックボックスを作成するマクロを作りたいと考えています。
ワークシートの数の取得、ワークシート名の取得方法、チェックボックスの値の取得方法はわかりましたが、ワークシートの数だけ、チェックボックスを適当なサイズで自動生成する方法がわからず困っています。
長いコードになると思いますが、よろしければコードも含めて教えてください、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
コントロールを自動作成するときは次のようなちょと面倒なことを
考慮しなければいけなくなります。
ユーザーフォームのサイズ
チェックボックスの配置する位置、サイズ
何列に配置するか、その場合の位置。
一番の問題はシートの数が多くなってユーザーフォーム領域に配置できなくなったらどうするか、等々。
これらを考えると、質問の処理では項目がリスティングされるような
コンボボックスかリストボックスの使うのが適していると思いますが。
「うんにゃ、どうしてもチェックボックスの自動作成だぁ~」
ということなら、上記の問題点を考慮していない簡単なサンプルをアップします。
ま、コードはマクロ記録をとれば大体はわかります。
ただ、ユーザーフォームへコントロールを配置してもマクロ記録はとれませんから、
シート上にチェックボックスを配置するマクロ記録をとってください。
以上。
回答ありがとうございます。
敷居の高い質問だったとは重々承知していました。
今回、シートの数が多くなってきて表示できなくなる等の問題は、ある程度、形ができてから回避していこうと考えています。またそれが楽しいので。
ですのであえて、「うんにゃ、どうしてもチェックボックスの自動作成だぁ~」でお願いできないでしょうか?。よろしくお願いします。
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
'-------------------------------------------------
ユーザーフォーム表示領域云々は、予め大き目のフォームを作っておくとしても
シート枚数が多い場合は見栄え良くするためにチェックボックスを複数列で表示したい場合があるでしょうが、
それは自分で考えてみてください。
そして、分からないときはまた遠慮なく質問してください。
やる気のある人は、応援しなければ。。(^^;;;
以上。
今、仕事から帰ってきたので、試してみました。質問も仕事中にやってましたw これは、、、感動ですね。こんな短いコードで実現できるとは、知識の差としか言いようがないですね。VBA暦2週間なので偉そうな事言えませんが、連日夜更かししてやってたので多少知ったつもりでした。恐れ入りました。
そういえば、前にも回答していただいた方みたいですね。本当に助かっております。m(・_・)m (やっばいってまずいの事ですかね??)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBAでチェックボックスにチェックを入れる 1 2022/09/14 00:52
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Excel(エクセル) シートが違う2枚のエクセルシートにある数値を別シートにコピーしたい(VBA?) 8 2022/03/31 12:24
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- その他(Microsoft Office) Excelで総数量を変動させたい 2 2022/11/04 23:49
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) Excel VBA シートを追加後に余分なシートを削除する、の意味 21 2022/05/19 22:46
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームに入力したデ...
-
XL:BeforeDoubleClickが動かない
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
実行時エラー'1004': WorkSheet...
-
特定の文字を含むシートだけマ...
-
VBA 存在しないシートを選...
-
Excel VBA で自然対数の関数Ln...
-
Access エクセルシート名変更
-
Excel チェックボックスにチェ...
-
VBAで指定シート以外の選択
-
【VBA】全ての複数シートから指...
-
VBA 検索して一致したセル...
-
エクセルVBA 別シートからのコ...
-
【エクセルVBA】「Protect User...
-
ブック名、シート名を他のモジ...
-
VBA ThisWorkbookはSheet*で記...
-
userFormに貼り付けたLabelを変...
-
マクロを使って、シート印刷完...
-
Excel VBA リンク先をシート...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
ユーザーフォームに入力したデ...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
エクセルVBA Ifでシート名が合...
-
実行時エラー1004「Select メソ...
-
エクセルのシート名変更で重複...
-
【ExcelVBA】全シートのセルの...
-
VBA 存在しないシートを選...
-
ブック名、シート名を他のモジ...
-
Excel チェックボックスにチェ...
-
VBA 検索して一致したセル...
-
エクセルで通し番号を入れてチ...
-
シートが保護されている状態で...
-
【VBA】特定の文字で改行(次の...
-
ExcelのVBAのマクロで他のシー...
-
Worksheet_Changeの内容を標準...
-
EXCELVBAを使ってシートを一定...
おすすめ情報