No.4ベストアンサー
- 回答日時:
どうしても Initialize イベントで初期設定を行いたいのなら、標準モジュールに書いた Public な変数に情報を持つしかないと思います。
呼び出し元から、最初にシート名一覧を Public 変数である "配列A" にセットしてからフォームを Show する。
Initialize じゃなくても良いのなら、フォームに独自のプロパティを作成する方法。
例えばこんな感じとか。
' 呼び出し元のコード
Dim sheetNames As String
' シート名に使えない文字を区切り文字に使う
sheetNames = "a/b/c/d/e/f"
UserForm1.OpenArg = sheetNames
UserForm1.Show
' ユーザーフォームのコード
Option Explicit
Public Property Let OpenArg(aArg As String)
Dim argArray As Variant
argArray = Split(aArg, "/")
Dim arg As Variant
For Each arg In argArray
Me.ComboBox1.AddItem arg
Next
End Property
フォームを Show する前にプロパティを呼び出すので、その瞬間にますフォームの Initialize イベントが実行され、そのあとプロパティに値がセットされてコンボボックスに値が入ります。
したがって Initialize イベント内でコンボボックスの値を元に他の初期化もすることはできませんので、コンボボックスに入れる値を使って初期化するコードはすべてこの独自プロパティの中で処理する必要があります。
ということで、初期化のコードが多い場合はコードが煩雑になる可能性があります。
No.3
- 回答日時:
ウーン!
AddItem だけでは、表示されなくて当然です。
Private Sub CommandButton1_Click()
With UserForm1.ComboBox1
.AddItem "AAA"
.AddItem "BBB"
.AddItem "CCC"
.Value = "AAA" ' Value の設定が必要
End With
UserForm1.Show
End Sub
ただ、ドロップダウン表示するには、次の仕掛けも必要です。
Private Sub UserForm_Activate()
ComboBox1.DropDown
End Sub
なお、どうしても局所的な配列を渡したければ、<フォームのCaptionを経由して渡す>ことが可能です。
が、簡単なのは、広域変数を使うことです。
Private Sub CommandButton1_Click()
WSName(0) = "AAA"
WSName(1) = "BBB"
UserForm1.Show
End Sub
Private Sub UserForm_Activate()
With ComboBox2
.AddItem WSName(0)
.AddItem WSName(1)
End With
End Sub
No.2
- 回答日時:
Private Sub CommandButton1_Click()
UserForm1.ComboBox1.AddItem "AAA"
UserForm1.ComboBox1.AddItem "BBB"
UserForm1.ComboBox1.AddItem "CCC"
UserForm1.Show
End Sub
シート側で一気が判りやすいかと・・・。
この方法では、フォームを開くと同時に
コンボボックス内にアイテムが表示されないので
解決にはつながらなさそうです
回答ありがとうございました
No.1
- 回答日時:
VBカテですが、Excel-VBAですか?
こういう意味ではない?
Private Sub UserForm_Initialize()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ComboBox1.AddItem ws.Name
Next ws
End Sub
この方法でも問題ないと思いますが
この方法では、再度Worksheetのset を行わなくてはならないので避けたい方法です
ちなみに配列に格納されているsheet名は別Bookのsheet名全てです
回答ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access2016でフォーム内にExcelの複数シートを 表示させるイメージで複数テーブルの デー 1 2022/11/25 15:30
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- その他(Microsoft Office) Excelで総数量を変動させたい 2 2022/11/04 23:49
- JavaScript テーブルの中のセレクトボックスの値が0のとき、非表示にしたい 3 2022/05/29 10:13
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- Visual Basic(VBA) VBA ユーザーフォームからSubプロージャ―に値を引き渡す方法 3 2023/04/09 01:54
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- Excel(エクセル) Excel VBA 指定フォルダに格納されている全エクセルファイルに指定シートを挿入する方法について 1 2022/08/22 11:53
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
EXCEL VBAのユーザーフォームに引数を渡す方法について
Excel(エクセル)
-
コンボボックス内の文字サイズ変更
Excel(エクセル)
-
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
-
4
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
5
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
6
TextBoxコントロールを引数として渡すには?
その他(教育・科学・学問)
-
7
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
8
private subモジュールを他のモジュールから呼び出して使う方法を教えてください(-.-)
Visual Basic(VBA)
-
9
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
10
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
11
どこにもフォーカスを当てたくない
Access(アクセス)
-
12
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
13
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
14
VBAでワークシートを引数としてサンプル関数に渡したい
Visual Basic(VBA)
-
15
フォームのテキストボックスなどの変数名を標準モジュールから参照は可能か?
Visual Basic(VBA)
-
16
フレーム内に移動したい
Visual Basic(VBA)
-
17
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
18
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
19
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
20
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
VBAでユーザーフォームを再表示...
-
ExcelVBAのユーザーフォームの...
-
vb2008にてDefaultCellStyleが...
-
ユーザーフォーム上に現在日時...
-
MSGBOXのフォント大きさ変更
-
クリックイベントなのに、2回ク...
-
モーダルフォームとモードレス...
-
Hideについて(.NET)
-
Form_Load と Form_Activate の...
-
ブックをCloseまたはQuitで閉じ...
-
ExcelVBAのユーザーフォームでe...
-
[VB6] フォームを閉じる方法に...
-
クリックするたびに、フォーム...
-
ユーザーフォームのテキストボ...
-
フォームを画面のど真ん中に表...
-
Accessで、一つのフォーム画面...
-
コントロールの存在確認
-
Excelにて、ユーザーフォームで...
-
テキストボックスやラベルのクリア
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
クリックイベントなのに、2回ク...
-
Microsoft Formsの「個人情報や...
-
ユーザーフォームのテキストボ...
-
【VBAユーザーフォームで閉じる...
-
モーダルフォームとモードレス...
-
VBAでユーザーフォームを再表示...
-
エクセルVBAのフォームを最...
-
MSGBOXのフォント大きさ変更
-
Form_Load と Form_Activate の...
-
ユーザーフォーム上に現在日時...
-
Excelにて、ユーザーフォームで...
-
Hideについて(.NET)
-
フォームウィンドウを最前面に...
-
コントロールの存在確認
-
VBA(エクセル)のユーザー...
-
'ユーザーフォーム右上隅の[×...
-
エクセルVBA フォーム上でOnkey...
-
ブックをCloseまたはQuitで閉じ...
おすすめ情報