0

此代码完美运行。我只有一个问题,我想做到这一点,如果单元格 Q23 中没有任何内容,它不会将任何内容放入 NCMR 数据中,并说些什么……代码在我所拥有的下面,下面是什么我想我需要做一个特定的部分才能工作,有人可以审查并确保我走在正确的道路上吗?

Option Explicit

Sub NCMR()
    Dim i As Integer

    With Application
        .ScreenUpdating = False
    End With

    'Internal NCMR
    Dim wsInt As Worksheet
    Dim wsNDA As Worksheet

    'Copy Ranges
    Dim c As Variant

    'Paste Ranges
    Dim P As Range

    'Setting Sheet
    Set wsInt = Sheets("NCMR Input")
    Set wsNDA = Sheets("NCMR Data")
    Set P = wsInt.Range("B61:V61")

    With wsInt
        c = Array(.Range("B11"), .Range("B14"), .Range("B17"), .Range("B20"), .Range("Q23"), .Range("B23") _
                , .Range("Q11"), .Range("Q14"), .Range("Q17"), .Range("Q20"), .Range("R26"), .Range("V23") _
                , .Range("V25"), .Range("V27"), .Range("B32"), .Range("B40"), .Range("B46"), .Range("B52") _
                , .Range("D58"), .Range("L58"), .Range("V58"))
    End With

    For i = LBound(c) To UBound(c)
        P(i + 1).Value = c(i).Value
    Next

    With wsNDA
        Dim LastRow As Long

        LastRow = .Range("A" & Rows.Count).End(xlUp).Row + 1

        wsInt.Rows("61").Copy

        With .Rows(LastRow)
            .PasteSpecial Paste:=xlPasteFormats
            .PasteSpecial Paste:=xlPasteValues
            .Interior.Pattern = xlNone
        End With

        With .Range("A" & LastRow)
            If LastRow = 3 Then
                .Value = 1
            Else
                .Value = Val(wsNDA.Range("A" & LastRow - 1).Value) + 1
            End If

            .NumberFormat = "0#######"
        End With
    End With

    With Application
        .Range("A61:V61").ClearContents
        .ScreenUpdating = True
    End With
End Sub

我想做什么我想:

With wsInt
    Dim f As Range

    Set f = .Cell("Q23")

        If IsEmpty(f) Then
            MsgBox "The data can't entered, you have not entered any data into the Sales Order field."
        Else
                    c = Array(.Range("B11"), .Range("B14"), .Range("B17"), .Range("B20"), .Range("Q23"), .Range("B23") _
                , .Range("Q11"), .Range("Q14"), .Range("Q17"), .Range("Q20"), .Range("R26"), .Range("V23") _
                , .Range("V25"), .Range("V27"), .Range("B32"), .Range("B40"), .Range("B46"), .Range("B52") _
                , .Range("D58"), .Range("L58"), .Range("V58"))
        End If
End With
4

1 回答 1

1

也许很简单:

With wsInt 
    If Len(.Range("Q23")) = 0 Then
        MsgBox "The data can't be entered, you have not entered any data into the Sales Order field."
        Exit Sub
    End If
End With      'added this line for clarity
于 2012-05-14T22:31:31.420 回答