为什么`Empty`在这个VBA代码中不起作用?

bdk*_*ong 2 excel vba excel-vba

下面的代码应该检查单元格是否为空,如果是空的,则将B26的内容粘贴到该单元格中.如果单元格不为空,则继续检查其下方的单元格.我尝试使用IsEmpty但是没有用,所以我认为Excel将所有空单元格默认为0.所以我尝试使用Empty(如下面的代码所示),但这也不起作用.

Sub Part1_Component_1_Foam_Color()
'
' Transfers Component 1 Data if Foam or color
'

'
Windows("Transfer Template.xlsm").Activate
Range("B26").Select
Selection.Copy
Windows("Protected_JD_Form.xls").Activate
    If Range("B27:C27") = Empty Then
        Range("B27:C27").Select
        Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
            xlNone, SkipBlanks:=False, Transpose:=False
            Exit Sub
    ElseIf Range("B28:C28") = Empty Then
        Range("B28:C28").Select
        Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
            xlNone, SkipBlanks:=False, Transpose:=False
            Exit Sub
    ElseIf Range("B29:C29") = Empty Then
        Range("B29:C29").Select
        Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
            xlNone, SkipBlanks:=False, Transpose:=False
            Exit Sub
    ElseIf Range("B30:C30") = Empty Then
        Range("B30:C30").Select
        Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
            xlNone, SkipBlanks:=False, Transpose:=False
            Exit Sub
    End If
Windows("Transfer Template.xlsm").Activate
Range("A1").Select
End Sub
Run Code Online (Sandbox Code Playgroud)

mie*_*elk 5

您可以使用

If Application.WorksheetFunction.CountA(Range("B27:C27")) = 0 Then
Run Code Online (Sandbox Code Playgroud)

代替

If Range("B27:C27") = Empty Then
Run Code Online (Sandbox Code Playgroud)

顺便说一下,在粘贴数据之前不需要选择范围.

这段代码

    Range("B27:C27").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
Run Code Online (Sandbox Code Playgroud)

可以替换为

    Range("B27:C27").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
Run Code Online (Sandbox Code Playgroud)