Excel vba如果语句和自动更新

时间:2017-03-07 19:25:12

标签: excel vba excel-vba

我正在寻找VBA的一些基本帮助。我为其他成员创建了一个用户表单,以便在我们打电话时填写信息。按下确定后,数据将发送到sheet2并放在下一个打开的行中。在表3中,我得到了用户表单的可打印形式。我正在尝试以可打印的形式编写vba代码,因此当单元格b2中的调用#更改时,它将自动更改该表单中的所有其他单元格,相应的数据位于工作表2的同一行中。

我是论坛新手,所以我不知道如何上传等等,但我会尝试在下面举例。

Sheet2看起来像这样,例如每个单元格用“。”分隔。

18-170001.01 / 02 / 17.Accident。“当前地址”。“电话信息”

18-170002.01 / 02 / 17.培训。“当前地址”。“电话信息”

在Sheet4中

这是我正在使用的代码,它无法正常工作

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Long

    For i = 5 To Row.Count

        If sheet4 .cells(b2).value=sheet2.Cells(i,1).value then
            sheet4.cells(e2).value=sheet2.cells(i,1).value

        End If

    Next i

End Sub

我会为工作表4中的每个单元格添加额外的if if statles,以匹配工作表2中的每个单元格。

欢迎任何帮助

1 个答案:

答案 0 :(得分:0)

您无法使用Cells(b2),它必须是Range("B2")Cells(2, "B")Cells(2, 2)

所以你的代码可能是:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Long

    For i = 5 To Row.Count

        If sheet4.cells(2, "B").value=sheet2.Cells(i,1).value then
            sheet4.cells(2, "E").value=sheet2.cells(i,1).value

        End If

    Next i

End Sub

但是你最好只为这个目的使用一个公式。例如,上面的代码可以通过在sheet4的单元格E2中使用以下公式来代替:

=VLOOKUP(B2,Sheet2!A:A,1,FALSE)

(假设sheet2的工作表名称为" Sheet2"。)