過去ログ

                                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
 ───────────────────────────────────────  ■題名 : Re:リストボックスについて…  ■名前 : ichinose  ■日付 : 03/1/15(水) 23:44  -------------------------------------------------------------------------
   ▼学生 さん:
こんばんは。
>初めましてリストボックスについての質問なのですが,
>
>フォームの上にリストボックスとボタンを置き,ボタンをクリックすると
>現在開いている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
 ───────────────────────────────────────  ■題名 : Re:リストボックスについて…  ■名前 : 学生  ■日付 : 03/1/16(木) 18:26  -------------------------------------------------------------------------
   ▼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
 ───────────────────────────────────────  ■題名 : Re:リストボックスについて…  ■名前 : ichinose  ■日付 : 03/1/17(金) 2:04  -------------------------------------------------------------------------
   ▼学生 さん:
こんばんは。
前回、記述したサブプロシジャーを拡張してみました。
>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

これで、コマンドボタンクリックでブック名表示のリストボックスの選択を変えるたびに
シート名が表示されますが・・・・。どうでしょうか?
 ───────────────────────────────────────  ■題名 : Re:リストボックスについて…  ■名前 : 学生  ■日付 : 03/1/17(金) 13:42  -------------------------------------------------------------------------
   ichinoseさんありがとうございます.

できました!!まだ質問したいことがあるのですが,内容が違うので新しく投稿します.

ほんとにありがとうございました.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 561