2014-12-03 49 views
0

因此,我制作了一个相当简单的宏,它为列表添加了一条新记录。当字段为空时,我试图保持它不工作,所以我已经实现了对输入字段是否为空的检查。但是,我似乎无法让它工作。测试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 
+3

所有的数据活动都发生在“收入”上吗?如果您正在处理多个工作表,我可以看到这是一个问题,因为所有代码默认都会引用活动工作表。 – Dustin 2014-12-03 03:32:32

+0

我强烈建议使用.Cells(iRow,iCol)而不是Range(R1C1),因为使用变量而不是“A”,“B”等来循环和切换列更容易。 – peege 2014-12-03 03:54:33

+0

“Can似乎没有得到它的工作“是如此广泛的投诉。谨慎缩小它? (我怀疑@Dustin已经钉了它)。 – 2014-12-03 04:03:46

回答

1

这是写你所拥有的上述的另一种方式。随着更多关于如何设置的信息,我可以编辑和修改。另外,你的itemPrice应该是一个double,而不是一个Integer。

这是基于您的原始代码。但更深入地研究它。我不确定你是如何将ID列与Name同列的?我将它固定在下面的解决方案中,但您必须在屏幕截图中查看工作表的布局。

在此示例中,您输入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

编辑:更新的解决方案与工作代码。