• ベストアンサー

エクセルマクロ:リストについて

すみません、やっぱり分からなくなってしまったのでもう一度 質問させて下さい。 ボタンでマクロを実行すると、user formが開き、[ブック取得]という コマンドボタンを押すと現在開かれているブック名がリスト一覧で出てきます。 その一覧のうち一個のファイルを選択して[修正]ボタンを押すと 対象のブックにあらかじめ設定されているマクロが実行されると 言うのを作りたいと思っています。 わかりにくいかとは思いますがよろしくお願い致します。

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

A No.1です。それでもと思って、やってみました。先を越されてしまいましたが... test()を実行すると、UserFormを開き、ListBoxに開かれているブックのリストを示します。クリックしたブックの、あらかじめ下記コード中で指定したプログラムを実行します。ボタンは無いので、ご要求の仕様とちょっと異なります。 <標準モジュール> Sub test() Dim targetBookName As String UserForm1.Show targetBookName = UserForm1.ListBox1.Value Select Case targetBookName Case "c.xls" Workbooks(targetBookName).Activate Application.Run targetBookName & "!" & "Macro1" Case Else End Select Set UserForm1 = Nothing End Sub <UserForm1> Private Sub UserForm_Initialize() Dim wb As Workbook For Each wb In Workbooks If wb.Name <> "PERSONAL.XLS" Then Me.ListBox1.AddItem (wb.Name) Next End Sub Private Sub ListBox1_Click() Me.Hide End Sub

その他の回答 (2)

  • keirika
  • ベストアンサー率42% (279/658)
回答No.2

動作に必要な全てのBOOKが開かれている事を前提とします。 リストボックスへのブック名の追加は Dim i As Integer For i = 1 To Workbooks.Count ListBox1.AddItem (Workbooks(i).Name) Next リストボックスで選択されたマクロの実行は BOOK1からBOOK3まであり、それぞれにマクロがTESTと言う名前で登録されていると仮定します。 Application.Run ListBox1.Value & "!test" 希望するものと違う場合、ご容赦下さい。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

閉じられていない、前の質問に、先ほど回答したところです。 ほったらかしにしないで、閉じましょう。 >対象のブックにあらかじめ設定されているマクロが実行されると 言うのを作りたいと思っています。 この考え方を止めることをお勧めします。 ブックを選択しても、そのブックのマクロが実行される訳ではありません。Activateのイベントにでも入れておけば別ですが...

関連するQ&A