- ベストアンサー
Excel_VBAで、Windows名の羅列
Excelのウィンドウの名前をコンボボックスのListに設定する方法を模索しています。下記の方法では、上手く行きません。どなたか詳しいかたがいらっしゃいましたら教えて頂けないでしょうか? 宜しくお願い致します。 Private Sub UserForm_Initialize() Dim MyList() As String Dim MyWin As Windows Dim i As Integer ReDim MyList(1 To Windows.Count) i = 1 For Each MySh In Windows MyList(i) = MyWin.Name i = i + 1 Next Me.ComboBox1.List = MyList End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 お久しぶりになります。 For Each MySh In Windows 'MySh ではなくて、MyWin ですね。 MyList(i) = MyWin.Name 'プロパティはCaption です。 i = i + 1 Next でも、通常は、以下のように、Windowsよりも、Workbooks のWorkbook を取ったほうがよいですよ。開いた順に並んでいきます。 Private Sub UserForm_Initialize() Dim MyList() As String Dim MyWb As Variant '一応、Variant型にしています。 Dim i As Integer ReDim MyList(1 To Workbooks.Count) i = 1 For Each MyWb In Workbooks MyList(i) = MyWb.Name i = i + 1 Next Me.ComboBox1.List = MyList End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
Sub test01() Dim MyList() As String Dim MyWin As Object Dim i As Integer ReDim MyList(1 To Windows.Count) i = 1 MsgBox Windows.Count For Each MyWin In Windows MsgBox MyWin.Caption i = i + 1 Next End Sub のようにすると、表示されるものでよいですか。 時間がないので >コンボボックスのListに設定はまた。 > MySh はおかしくないですか。 シート名の一覧をリストするのですか。
お礼
おはようございます。 Captionでやってみます。 しかし、Text、Value、Name、Captionと同じような名前が出てきて頭がごちゃごちゃになっちゃいますね? ありがとうございました。
- pbforce
- ベストアンサー率22% (379/1719)
Me.Combobox1.AddItem MyList
お礼
おはようございます。 本当にお久しぶりです。ただでさえ、サンデープログラマーなんですが、最近は、少し.NET(VSTO)に手を出していて、余計頭がごっちゃまぜになっている状況です。 Windowsにしたのには、訳があって、一つのブックを新しいウィンドウを開く(Book1:1、Book1:2)となった場合に、Workbooksでは、取得出来ないウィンドウが出てくるためです。 MyShとなっていたのは、同時にシート名の羅列のComboBoxも作っていてコピーをたためです。自分の中では、Shのまま使っていて、投稿するときに急遽winに書き換えたので、残骸です。 Captionで、やってみましたところうまくいきました。 ありがとうございました。