excelファイル 'A.xlsx
' - 私は参照ボタン(CommandButton1
)をクリックすると、別のExcelファイルが開かれた(例えば、 'B.xlsx
)'という名前のユーザーフォームがあります。 excelfileに存在するシートは、コンボボックスの需要プランを選択 "をに表示(ComboBox1
)特定のワークブック(パス別)と特定のシートをループする
これを実行するコードは次のとおりです。
Private Sub CommandButton1_Click()
Dim sFilePath As String
sFilePath = Application.GetOpenFilename()
Workbooks.Open (sFilePath)
For Each sht In ActiveWorkbook.Sheets
Form.ComboBox1.AddItem (sht.Name)
Next sht
End Sub
私はワNT選択したブック(B.xlsx
)で選択したワークシート(Sheet1
セイ)のすべての列ヘッダ(列名)は、他のコンボボックスに表示されていること(Part Number, CSUFI/ATA, Keyword
...)
私は、このために別の関数書き始めた:
をPrivate Sub ComboBox1_Change()
cmb = Form.ComboBox1.Value
Dim Cell As Range
For Each Cell In ActiveWorkbook.Worksheets(cmb).Range("A1:AR1")
Form.ComboBox2.AddItem (Cell.Value)
Form.ComboBox3.AddItem (Cell.Value)
Form.ComboBox4.AddItem (Cell.Value)
Form.ComboBox5.AddItem (Cell.Value)
Form.ComboBox6.AddItem (Cell.Value)
Form.ComboBox7.AddItem (Cell.Value)
Form.ComboBox8.AddItem (Cell.Value)
Form.ComboBox9.AddItem (Cell.Value)
Form.ComboBox10.AddItem (Cell.Value)
Form.ComboBox11.AddItem (Cell.Value)
Form.ComboBox12.AddItem (Cell.Value)
Form.ComboBox13.AddItem (Cell.Value)
Next Cell
End Sub
明らかに、このコードの問題点は、現在のActiveWorkbook
であるA.xlsxをループすることです。選択したワークブック(B.xlsx)をループします。
- どうすればよいですか?
また、今のところ、コンボボックスに多くのヌルエントリを発生させるハードコードされた範囲(A1:AR1)を与えています。その目的は、NULLでない列ヘッダーだけをループすることです(有効な列ヘッダー)
- どうすればよいですか?
今の完全なコード:
Dim wb As Workbook
Private Sub CommandButton1_Click()
Dim sFilePath As String
sFilePath = Application.GetOpenFilename()
Set wb = Workbooks.Open(sFilePath)
For Each sht In wb.WorkSheets
Form.ComboBox1.AddItem sht.Name
Next sht
End Sub
その後、他の方法であなたがActiveWorkbook
の代わりに、グローバルwb
を使用することができます。
Private Sub ComboBox1_Change()
cmb = Form.ComboBox1.Value
Dim Cell As Range
For Each Cell In ActiveWorkbook.Worksheets(cmb).Range("A1:AR1")
Form.ComboBox2.AddItem (Cell.Value)
Form.ComboBox3.AddItem (Cell.Value)
Form.ComboBox4.AddItem (Cell.Value)
Form.ComboBox5.AddItem (Cell.Value)
Form.ComboBox6.AddItem (Cell.Value)
Form.ComboBox7.AddItem (Cell.Value)
Form.ComboBox8.AddItem (Cell.Value)
Form.ComboBox9.AddItem (Cell.Value)
Form.ComboBox10.AddItem (Cell.Value)
Form.ComboBox11.AddItem (Cell.Value)
Form.ComboBox12.AddItem (Cell.Value)
Form.ComboBox13.AddItem (Cell.Value)
Next Cell
End Sub
Private Sub CommandButton1_Click()
Dim sFilePath As String
sFilePath = Application.GetOpenFilename()
Workbooks.Open (sFilePath)
For Each sht In ActiveWorkbook.Sheets
Form.ComboBox1.AddItem (sht.Name)
Next sht
End Sub
'activebook'を使用しないで、' workbooks( "B.xlsx") ' – jsotola
を使用しますか?ワークブックへのパスは 'CommandButton1_Click()'にあります – user248884