• ベストアンサー

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

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 お久しぶりになります。 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

wan_wan
質問者

お礼

おはようございます。 本当にお久しぶりです。ただでさえ、サンデープログラマーなんですが、最近は、少し.NET(VSTO)に手を出していて、余計頭がごっちゃまぜになっている状況です。 Windowsにしたのには、訳があって、一つのブックを新しいウィンドウを開く(Book1:1、Book1:2)となった場合に、Workbooksでは、取得出来ないウィンドウが出てくるためです。 MyShとなっていたのは、同時にシート名の羅列のComboBoxも作っていてコピーをたためです。自分の中では、Shのまま使っていて、投稿するときに急遽winに書き換えたので、残骸です。 Captionで、やってみましたところうまくいきました。 ありがとうございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

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 はおかしくないですか。 シート名の一覧をリストするのですか。

wan_wan
質問者

お礼

おはようございます。 Captionでやってみます。 しかし、Text、Value、Name、Captionと同じような名前が出てきて頭がごちゃごちゃになっちゃいますね? ありがとうございました。

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.1

Me.Combobox1.AddItem MyList

関連するQ&A

専門家に質問してみよう