[英]VBA Excel Combo Boxes
我有一個Excel VBA用戶窗體,我無法工作。 第一個組合框需要鏈接到相關表(年份)。 然后,第二個組合框或列表框將在所選工作表的第一列(月份)中獲取數據,然后輸入數據並顯示在相關行的相關工作表中。 我的編碼是基本的,我的引用是錯誤的,你能幫忙嗎?
這是有效的,它將它放在正確的工作表中,但不在右邊的行(組合框2)中:
Private Sub CommandButton1_Click()
With ThisWorkbook.Worksheets(cboTest.Value)
.Range("D2").Value = nightElec
.Range("F2").Value = dayHeat
.Range("G2").Value = nightHeat
.Range("I2").Value = dayWater
.Range("J2").Value = nightWater
dayElec = Empty
End With
End Sub
如何將其用作用戶表單的代碼:
Private Sub UserForm_Initialize()
Dim wks As Worksheet
'loop through all worksheets
For Each wks In ThisWorkbook.Worksheets
'add their names as items to your combo-box
cboTest.AddItem wks.Name
Next wks
End Sub
然而,這只是許多方法中的一種方式。 在這里,我假設您沒有以任何其他形式保存您的工作表名稱 - 例如數組 - 並且需要獲取這些信息。
此外,這只是用戶表單初始化的例程 - 而不是更新。
Private Sub UserForm_Initialize()
InitCbo
End Sub
Private Sub InitCbo()
Dim wks As Worksheet
With cboTest
'delete all current items of cboTest
.Clear
'loop through all worksheets
For Each wks In ThisWorkbook.Worksheets
'add their names as items to your combo-box
.AddItem wks.Name
Next wks
'select first item
.ListIndex = 0
End With
End Sub
現在您可以使用InitCbo
來更新組合框。 就像點擊按鈕或添加新工作表一樣。
您可能也對List
屬性感興趣,因為您也可以使用它設置Items - 就像在這個excel-help示例中一樣:
Dim MyArray(6,3)
Private Sub UserForm_Initialize()
Dim i As Single
'The 1-st list box contains 3 data columns
ListBox1.ColumnCount = 3
'The 2nd box contains 6 data columns
ListBox2.ColumnCount = 6
'Load integer values into first column of MyArray
For i = 0 To 5
MyArray(i, 0) = i
Next i
'Load columns 2 and three of MyArray
MyArray(0, 1) = "Zero"
MyArray(1, 1) = "One"
MyArray(2, 1) = "Two"
MyArray(3, 1) = "Three"
MyArray(4, 1) = "Four"
MyArray(5, 1) = "Five"
MyArray(0, 2) = "Zero"
MyArray(1, 2) = "Un ou Une"
MyArray(2, 2) = "Deux"
MyArray(3, 2) = "Trois"
MyArray(4, 2) = "Quatre"
MyArray(5, 2) = "Cinq"
'Load data into ListBox1 and ListBox2
ListBox1.List() = MyArray
ListBox2.Column() = MyArray
End Sub
我知道,這是一個ListBox的例子 - 但據我所知,它也適用於ComboBox或至少是simmilar。
編輯:
您粘貼的代碼將始終使用活動工作簿和活動工作表,因此此Range("C2").Value = dayElec
不會更改列表/組合框的selceted工作表的值。
您需要將其修改為:
Private Sub CommandButton1_Click()
With ThisWorkbook.Worksheets(cboTest.value)
.Range("D2").Value = nightElec
.Range("F2").Value = dayHeat
.Range("G2").Value = nightHeat
.Range("I2").Value = dayWater
.Range("J2").Value = nightWater
dayElec = Empty
End With
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.