

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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
EXCEL VBAのユーザーフォームに引数を渡す方法について
Excel(エクセル)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
-
4
TextBoxコントロールを引数として渡すには?
その他(教育・科学・学問)
-
5
VBAもしくはVB6:クラスの中でクラスは使える?
Visual Basic(VBA)
-
6
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
8
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
9
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
10
エラー内容が分かりません
Access(アクセス)
-
11
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
12
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
13
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
14
Excel・ユーザーフォームの情報を受け渡したい
Visual Basic(VBA)
-
15
excel vba でユーザーフォーム入力ができない
Visual Basic(VBA)
-
16
VBAでのユーザフォームの表示有無の確認について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft Formsの「個人情報や...
-
クリックイベントなのに、2回ク...
-
ユーザーフォームを表示中にシ...
-
モーダルフォームとモードレス...
-
最小化最大化のボタンの表示を...
-
ExcelVBAのユーザーフォームの...
-
サブフォームのイベントを取得...
-
VBAでユーザーフォームを再表示...
-
FC2メールフォームの投稿確認が...
-
子フォームでDB更新後、親フォ...
-
VBAで画像を表示する方法
-
VBE ユーザーフォーム重複・空...
-
フォームウィンドウを最前面に...
-
Excel VBA で、マクロを実行し...
-
VBA(エクセル)のユーザー...
-
ACCESS VBA ウィンドウを閉じる
-
パソコンの画面に合わせてユー...
-
アクセスのUserFormにはInitial...
-
ユーザーフォームのテキストボ...
-
アクセス 別フォームの関数の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
クリックイベントなのに、2回ク...
-
Microsoft Formsの「個人情報や...
-
Form_Load と Form_Activate の...
-
ユーザーフォーム上に現在日時...
-
VB.NETでフォームロード中のエ...
-
Hideについて(.NET)
-
VBAでユーザーフォームを再表示...
-
Excelにて、ユーザーフォームで...
-
VBAのテキストフォームの折り返...
-
モーダルフォームとモードレス...
-
ユーザーフォームのラベルに時...
-
VBA(エクセル)のユーザー...
-
コントロールの存在確認
-
ACCESSのフォーム、開くんです...
-
エクセルVBAのフォームを最...
-
Accessで、一つのフォーム画面...
-
【VBAユーザーフォームで閉じる...
-
パソコンの画面に合わせてユー...
おすすめ情報