Page 561 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼リストボックスについて… 学生 03/1/15(水) 23:29 ┗Re:リストボックスについて… ichinose 03/1/15(水) 23:44 ┗Re:リストボックスについて… 学生 03/1/16(木) 18:26 ┗Re:リストボックスについて… ichinose 03/1/17(金) 2:04 ┗Re:リストボックスについて… 学生 03/1/17(金) 13:42 ─────────────────────────────────────── ■題名 : リストボックスについて… ■名前 : 学生 ■日付 : 03/1/15(水) 23:29 -------------------------------------------------------------------------
初めましてリストボックスについての質問なのですが, フォームの上にリストボックスとボタンを置き,ボタンをクリックすると 現在開いているBookをすべてリストボックスに列挙したいと考えております. このようなことはできるのでしょうか? 検索をかけてみたのですが似た質問が見つかりませんでした.よろしくお願いします. 私は他の言語は使用したことはあるのですが,VBAはかなり初心者です. 環境…Win2000NT | Excel2000 |
▼学生 さん: こんばんは。 >初めましてリストボックスについての質問なのですが, > >フォームの上にリストボックスとボタンを置き,ボタンをクリックすると >現在開いているBookをすべてリストボックスに列挙したいと考えております. >このようなことはできるのでしょうか? > >検索をかけてみたのですが似た質問が見つかりませんでした.よろしくお願いします. > >私は他の言語は使用したことはあるのですが,VBAはかなり初心者です. > >環境…Win2000NT | Excel2000 このマクロを動かしているブックの名前も入る仕様ですが・・・。 '========================================================== Private Sub CommandButton1_Click() Dim bknm() As String Call get_all_bknm_list(bknm()) With ListBox1 .Clear .List = bknm() .ListIndex = 0 End With End Sub '=============================================== Sub get_all_bknm_list(bknm() As String) Dim cwkbk As Workbook ReDim bknm(1 To Workbooks.Count) idx = 1 For Each cwkbk In Workbooks bknm(idx) = cwkbk.Name idx = idx + 1 Next End Sub |
▼ichinose さん: 返信ありがとうございます.bookの列挙はできました. また質問なのですが,bookを列挙したListBox(Book_ListBox)の横にもう一つ新しいListBox(Sheet_ListBox)を作り,そこにBook_ListBoxで選択されたbook内の全Sheet をSheet_ListBoxに列挙したいと考えております. 現在,Book_ListBoxでクリックしたItem?のListIndexは取得できました(メッセージボックスで確認しました). 今想像しているのは,bknm()配列の(ListIndex+1)に格納されているbook内のSheetを列挙するのではないかといった感じです,しかしbknm()はローカル変数?なのでグローバル変数で宣言しなければならないっぽい,またbknm()は文字列型なので,bookのハンドル?ID?のようなものを格納できる型にしなければならないのではないか...と言った感じです. 質問ばかりなのですが,よろしくお願いします. 環境…Win2000NT | Excel2000 |
▼学生 さん: こんばんは。 前回、記述したサブプロシジャーを拡張してみました。 >Sub get_all_bknm_list(bknm() As String) > Dim cwkbk As Workbook > ReDim bknm(1 To Workbooks.Count) > idx = 1 > For Each cwkbk In Workbooks > bknm(idx) = cwkbk.Name > idx = idx + 1 > Next >End Sub は、 '================================================== Sub get_all_collect_list(objnm() As String, clt As Object) ReDim objnm(1 To clt.Count) idx = 1 For Each obj In clt objnm(idx) = obj.Name idx = idx + 1 Next End Sub と変更してください。 後は、・・・・。 '============================================================ Private Sub Book_ListBox_Click() Dim objnm() As String With Book_ListBox Call get_all_collect_list(objnm(), Workbooks(.Text).Worksheets) End With With Sheet_ListBox .Clear .List = objnm() .ListIndex = 0 End With End Sub '==================================================== Private Sub CommandButton1_Click() Dim objnm() As String Call get_all_collect_list(objnm(), Workbooks) With Book_ListBox .Clear .List = objnm() .ListIndex = 0 End With End Sub これで、コマンドボタンクリックでブック名表示のリストボックスの選択を変えるたびに シート名が表示されますが・・・・。どうでしょうか? |
ichinoseさんありがとうございます. できました!!まだ質問したいことがあるのですが,内容が違うので新しく投稿します. ほんとにありがとうございました. |