• ベストアンサー

リストボックスの項目に、他のブックのセルの値を設定するには?

EXECL2003でユーザーフォームを作成しているのですが困っています。 リストボックス(またはコンボボックス)の項目の設定に、他のブックのセルの値を使用したいのですがわかりません。 具体的には「単価表.xls」「見積書.xls」と2つのブックがあり、「見積書.xls」にユーザーフォームを作成します。 そのユーザーフォームのリストボックスの項目に「単価表.xls」のセルの値を設定したいのです。 本を見たりWEBを検索しても、ブック内のシートのセルの値を設定する例しか見つけることができません。 何か手がかりでも教えていただければ助かります。 よろしくお願いいたします。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

別のブックでも以下のように参照が可能です。  UserForm1.ListBox1.AddItem Workbooks("単価表.xls").Sheets("単価").Cells(i, 1).Value ただし単価表.xlsが開いていなければなりませんので、単価表.xlsが開いていないことも想定すると次のようなマクロになるかもしれません (「単価表.xls」「見積書.xls」は同じフォルダにあると想定) Sub Macro3() Dim wb As Workbook Dim sw As Boolean Dim i As Integer For Each wb In Workbooks '単価表.xlsが開いているかチェック  If wb.Name = "単価表.xls" Then   sw = True   Exit For  End If Next wb If sw = False Then '開いていないときは開く  Workbooks.Open Filename:="単価表.xls" End If UserForm1.ListBox1.Clear For i = 1 To 10 'リストボックス項目を追加  UserForm1.ListBox1.AddItem Workbooks("Book2.xls").Sheets("Sheet1").Cells(i, 1).Value Next i UserForm1.Show End Sub

korin_1003
質問者

お礼

できました!! ありがとうございました。

その他の回答 (1)

  • x0000x
  • ベストアンサー率52% (67/127)
回答No.1

単価表.xlsのSheet1のA2:B10を表示するとして、 以下で表示できます。 ただし、単価表.xlsはOPEN済みの場合です。 ColumnCount=2 ColumnWidth=2cm;3cm RowSource=[単価表.xls]Sheet1!A2:B10 Excel2003で確認。

korin_1003
質問者

お礼

早速の回答ありがとうございます。 参考にさせていただきました。

関連するQ&A

専門家に質問してみよう