Excel 若范围内的单元格与组合框值匹配,则为右单元格值
我试图通过Excel和VBA创建一条时间线,将小时数(1-24)列在A1:A24范围内;我创建了一个组合框,在列表中填充了这个范围,现在我正在尝试将这两个区域链接起来,这样,如果我在组合框中选择某个小时,Excel将在给定范围的特定单元格右侧显示“Test”一个单元格(例如,如果我在组合框中选择“8”,Excel将在B8中显示“Test”,因为A8的值是“8”) 这就是我对VBA所知甚少的程度:Excel 若范围内的单元格与组合框值匹配,则为右单元格值,excel,vba,Excel,Vba,我试图通过Excel和VBA创建一条时间线,将小时数(1-24)列在A1:A24范围内;我创建了一个组合框,在列表中填充了这个范围,现在我正在尝试将这两个区域链接起来,这样,如果我在组合框中选择某个小时,Excel将在给定范围的特定单元格右侧显示“Test”一个单元格(例如,如果我在组合框中选择“8”,Excel将在B8中显示“Test”,因为A8的值是“8”) 这就是我对VBA所知甚少的程度: Private Sub Combobox1_Change() For Each cell
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
如果有人能帮我解决这个问题那就太好了 如果列表的顺序是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
如果cell.Value=Me.ComboBox1.Value,请小心,然后ComboBox1
返回一个字符串
,您的单元格可能包含数字,并且If
可能不起作用(至少在这里是这样)
一个更通用的例程扫描整个列表,而不依赖其升序排序(很快您可能会有一个带有“Apple”、“Banana”、“Cherimoya”的列表,…)
Private子组合框1_Change()
Dim MyRange作为范围,Idx作为整数
设置MyRange=[A1]”或列表的起始位置
Idx=1
在MyRange(Idx,1)“启动处理时执行此操作
如果Str(MyRange(Idx,1))=Str(ComboBox1),那么
如果MyRange(Idx,2)=“Then”奖金:进行切换
MyRange(Idx,2)=“测试”
其他的
MyRange(Idx,2)=“”
如果结束
对于完整列表处理,是否退出“Do”
如果结束
Idx=Idx+1
环
端接头
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