在VBA宏中测试空字段

时间:2014-12-03 03:05:13

标签: excel vba excel-vba

所以我正在制作一个相当简单的宏,将新记录添加到列表中。当字段为空时,我试图阻止它工作,所以我已经检查输入字段是否为空。但是,我似乎无法让它发挥作用。

以下是代码:

Sub AddRecord_Click()
    Dim itemName As String
    Dim itemPrice As Integer
    Dim nextRow As Integer
    Dim idNumber As Integer

    nextRow = Sheets("REVENUES").Range("B" & Rows.Count).End(xlUp).Row + 1

    itemName = Range("A2").Value
    itemPrice = Range("B2").Value
    idNumber = (Range("A" & (nextRow - 1)).Value) + 1

    If Range("A2").Value <> "" And Range("B2").Value <> "" Then
        Range("A" & nextRow).Value = idNumber
        Range("B" & nextRow).Value = itemName
        Range("C" & nextRow).Value = itemPrice
        Range("D" & nextRow).Value = Date
        Range("A2").Value = ""
        Range("B2").Value = ""
    End If

End Sub

1 个答案:

答案 0 :(得分:1)

这是编写上述内容的另一种方式。有关如何设置的更多信息,我可以编辑和修改它。此外,您的itemPrice应该是double,而不是Integer。

这是基于您的原始代码。但仔细研究它。我不确定您的ID列是如何与名称相同的列?我在下面的解决方案中修复了它,但您必须在屏幕截图中看到工作表的布局。

在此示例中,您输入B2中的名称和C2中的价格。你可以修改它。我的大脑只需要这样写。

<强>试验:

Sub AddRecord_Click()
    Dim itemName As String
    Dim itemPrice As Double
    Dim nextRow As Long
    Dim idNumber As Integer

    nextRow = Sheets("REVENUES").Range("B" & Rows.Count).End(xlUp).Row + 1

    If Sheets("REVENUES").Range("C2").Value = "" Or Sheets("REVENUES").Range("B2").Value = "" Then
        MsgBox ("Please Complete Input Cells")
    Else
        itemName = Sheets("REVENUES").Range("B2").Value
        itemPrice = CDbl(Sheets("REVENUES").Range("C2").Value)
        idNumber = (Sheets("REVENUES").Range("A" & (nextRow - 1)).Value) + 1

        Sheets("REVENUES").Cells(nextRow, 1).Value = idNumber
        Sheets("REVENUES").Cells(nextRow, 2).Value = itemName
        Sheets("REVENUES").Cells(nextRow, 3).Value = itemPrice
        Sheets("REVENUES").Cells(nextRow, 4).Value = Now

        Sheets("REVENUES").Range("B2").Value = ""
        Sheets("REVENUES").Range("C2").Value = ""

    End If
End Sub

MessageBox

编辑:使用工作代码更新了解决方案。