2014-12-03 66 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

編輯:更新的解決方案與工作代碼。