(已解决)VBA循环忽略If语句

时间:2020-08-16 09:45:06

标签: excel vba loops for-loop if-statement

我试图根据列表框中的值更新单元格,在F列中查找ID号-我有一个搜索栏,在C列中查找参考号,然后使用ID填充UserForm1.ListBox1数字以ListBox1.List(x,8)结尾。同样,ID号是由一个简单的公式生成的,以便轻松为每一行赋予唯一的ID:= ROW($ F2)。我有一个非常可变的电子表格,通过该电子表格我们可以预约某些工作活动。这是一个共享文档,我正在尝试创建一种通过自动化减少用户错误的方法。

我的问题是我的循环不起作用,它只是从范围的顶部开始,似乎忽略了我的IF语句。我有一个多选列表框,它应根据搜索列F是否找到匹配的ID号来更新所有选定的条目。 为我的初学者和自学成才而道歉的原始代码,汇集了我在像这样的论坛中所能提供的一切。

任何帮助将不胜感激。

到目前为止,我所拥有的(我知道需要将F2-F500的范围修改为F2-lastrow,但是我不确定这是否是当前循环不起作用的原因):

    Private Sub CommandButton5_Click()
For x = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(x) = True Then
            Dim myCll As Range
            Dim myRnge As Range
            Set myRnge = Worksheets("Switch Out Tracker").Range(("F2"), ("F500"))
            For Each myCll In myRnge
                If myCll.Text = ListBox1.List(x, 8) Then
                    If myCll.Offset(0, -5).Value <> ListBox1.List(x, 0) Then
                        myCll.Offset(0, -5).Value = ListBox1.List(x, 0)
                    End If
                    If myCll.Offset(0, -3).Value <> ListBox1.List(x, 1) Then
                        myCll.Offset(0, -3).Value = ListBox1.List(x, 1)
                    End If
                    If myCll.Offset(0, -2) <> ListBox1.List(x, 2) Then
                        myCll.Offset(0, -2) = ListBox1.List(x, 2)
                    End If
                    If myCll.Offset(0, -1) <> ListBox1.List(x, 3) Then
                        myCll.Offset(0, -1) = ListBox1.List(x, 3)
                    End If
                    If myCll.Offset(0, 2) <> ListBox1.List(x, 5) Then
                        myCll.Offset(0, 2) = ListBox1.List(x, 5)
                    End If
                    If myCll.Offset(0, 3) <> ListBox1.List(x, 6) Then
                        myCll.Offset(0, 3) = ListBox1.List(x, 6)
                    End If
                End If
            Next myCll
        End If
Next x
Unload Me
Call SortsSwitchOutTracker
End Sub

编辑:列表的屏幕截图

screenshot of list

0 个答案:

没有答案