我正在尝试通过Excel和VBA创建一个时间线,在A1:A24范围内列出小时(1-24);我创建了一个ComboBox,用这个范围填充列表,现在我正在尝试链接这两个,所以如果我在ComboBox中选择一个小时,Excel将在该特定单元格的右侧显示“Test”一个单元格从给定范围(例如,如果我在ComboBox中选择“8”,则Excel将在B8中显示“Test”,因为A8的值为“8”)
这就是我对VBA的一点知识的了解:
Private Sub Combobox1_Change()
For Each cell In Range("A1:A24")
If cell.Value = Me.ComboBox1.Value Then
cell.Offset(0, 1).Value = "Test"
End If
Next
End Sub
如果有人能帮我解决这个问题会很棒!
答案 0 :(得分:0)
如果列表的订购顺序为1 - 24,请使用
Private Sub ComboBox1_Change()
Dim MyRange As Range
Set MyRange = [A1] ' or wherever your list starts
MyRange(ComboBox1.Value, 2) = "Test" ' address the range object by row, column
End Sub
小心If cell.Value = Me.ComboBox1.Value Then
... ComboBox1
会返回String
,您的手机可能包含数字而If
可能不起作用(至少在这种情况下是这样的) )。
一个更通用的例程扫描整个列表而不依赖于它的升序排序(你很快就会有一个列表" Apple"," Banana"," Cherimoya& #34;,...)
Private Sub ComboBox1_Change()
Dim MyRange As Range, Idx As Integer
Set MyRange = [A1] ' or whereever your list starts
Idx = 1
Do While MyRange(Idx, 1) <> "" ' start processing
If Str(MyRange(Idx, 1)) = Str(ComboBox1) Then
If MyRange(Idx, 2) = "" Then ' bonus: do a toggle
MyRange(Idx, 2) = "Test"
Else
MyRange(Idx, 2) = ""
End If
Exit Do ' or not for full list processing
End If
Idx = Idx + 1
Loop
End Sub