单元格长度为10个字符时自动打印Excel

单元格长度为10个字符时自动打印Excel,excel,vba,Excel,Vba,我正在设置一个迷你程序,让操作员扫描一个条形码,然后在excel中创建一个,然后在标签打印机上打印 我需要它在他扫描完10位数的代码后自动打印出来 到目前为止,我得到的是- 选项显式 Private Sub Worksheet_Change(ByVal Target As Range) If Len(Sheet1!A2) = 10 Then ActiveWorkbook.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False Shee

我正在设置一个迷你程序,让操作员扫描一个条形码,然后在excel中创建一个,然后在标签打印机上打印

我需要它在他扫描完10位数的代码后自动打印出来

到目前为止,我得到的是-

选项显式

Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Sheet1!A2) = 10 Then
ActiveWorkbook.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
Sheets("Sheet1").Range("A2").ClearContents
End If
End Sub
但这似乎不起作用。我在表1中有这个代码。我收到的错误消息是

运行时错误“438” 对象不支持此属性或方法

它强调了If Len位的问题


有人能帮忙吗?

通常,当你用扫描仪扫描条形码时,它会发送数字并发送“回车”符号或回车符,因此我会将其用作触发器(工作表选择更改),而不是工作表上的任何更改

但不管发生什么错误,您似乎没有正确引用单元格

If Len(Sheet1!A2) = 10 Then
应该是

if Len(Sheets("Sheet1").Range("A2").Value) = 10 Then

如果要在特定单元格更改时触发,请使用以下代码:

    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
        'Checks if A2 was the changed cell
        If Intersect(Target, Sheets("Sheet1").Range("A2")) Is Nothing Then Exit Sub
            Else
        Application.EnableEvents = False 'to prevent endless loop
            If Len(Target.Value) = 10 Then
                ActiveWorkbook.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
                Target.ClearContents
            Else
            End If
        End If
        Application.EnableEvents = True
    End Sub
从这里使用了Peter的代码: