excel vba工作表更改编译错误

excel vba工作表更改编译错误,vba,excel,Vba,Excel,我正在尝试更改工作表,只要sheet4.cells(“b2”)中有值,它就会引用sheet2,并将匹配行中的信息返回到文本框中。我运行这个作为一个测试,以获得正确的,一旦我这样做,将有100+文本和复选框。当一个值被输入到“B2”中时,我得到一个编译错误,没有找到方法或数据成员,突出显示私有子工作表_更改(byVal目标作为范围)。代码如下 Dim i As Variant, id As Long, j As Variant, flag As Boolean Private Sub clear

我正在尝试更改工作表,只要sheet4.cells(“b2”)中有值,它就会引用sheet2,并将匹配行中的信息返回到文本框中。我运行这个作为一个测试,以获得正确的,一旦我这样做,将有100+文本和复选框。当一个值被输入到“B2”中时,我得到一个编译错误,没有找到方法或数据成员,突出显示私有子工作表_更改(byVal目标作为范围)。代码如下

Dim i As Variant, id As Long, j As Variant, flag As Boolean

Private Sub clearform()

For j = 1 To 2
    Sheet4.Controls("textbox" & j).Value = ""
Next j

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

If Range("b2").Value <> "" Then

    If IsNumeric(Sheet4.Cells("b2")) Then
        i = 0
        id = Sheet4.Cells("b2").Value

        Do While Sheet2.Cells(i + 1, 1).Value <> ""

            If Sheet2.Cells(i + 1, 1).Value = id Then
               For j = 1 To 2
                  Sheet2.Cells(i + 1, j).Value = Sheet4.Controls("textbox" & j).Value

               Next j

           End If

            i = i + 1

        Loop

    Else
        clearform
    End If

End If

End Sub
Dim i为变量,id为长,j为变量,标志为布尔值
私有子clearform()
对于j=1到2
表4.控件(“文本框”和j).Value=“”
下一个j
端接头
私有子工作表_更改(ByVal目标作为范围)
如果范围(“b2”)。值为“”,则
如果是数字(表4.单元格(“b2”)),则
i=0
id=表4.单元格(“b2”).值
Do While Sheet2.单元格(i+1,1).值“”
如果Sheet2.单元格(i+1,1).Value=id,则
对于j=1到2
Sheet2.单元格(i+1,j).Value=Sheet4.控件(“文本框”&j).Value
下一个j
如果结束
i=i+1
环
其他的
清晰形式
如果结束
如果结束
端接头

1。收紧实际导致INtersect处理发生的内容。2.在写入工作表之前关闭事件,这样您就不会在工作表上运行“更改”。3.处理目标可能代表多个单元格的情况。我对vba非常陌生,您能帮我解决代码问题吗?处理目标可能代表多个单元格的情况是什么意思。它将我提到的所有三件事都发挥作用。Jeeped的解决方案:第2点。如果不想关闭和打开事件,可以使用
If Not(Target.Cells(i,j)Is Nothing).
检查特定单元格是否已更改