Excel 若范围内的单元格与组合框值匹配,则为右单元格值

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

我试图通过Excel和VBA创建一条时间线,将小时数(1-24)列在A1:A24范围内;我创建了一个组合框,在列表中填充了这个范围,现在我正在尝试将这两个区域链接起来,这样,如果我在组合框中选择某个小时,Excel将在给定范围的特定单元格右侧显示“Test”一个单元格(例如,如果我在组合框中选择“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

如果有人能帮我解决这个问题那就太好了

如果列表的顺序是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