2013-04-18 23 views
2

我是VBA的新手。我有一個我認爲很簡單的問題,但我愚蠢地失敗了。我必須生成MsgBox警告用戶輸入空白單元格中的數據。警告空單元格的用戶,並根據前面的列中的值指示位置

我也有通過指示在前面的列中的參數提空白信元的目的。其實我的excel列表非常大,但是,我上傳的圖片顯示了我的需求。

在A列中我已經進入了公司的名字 - 法拉利,奧迪和蘭博基尼,而在B欄我已經提到各自的汽車。在C,D,E欄中,我提到了他們幾個月的銷售數字。如果用戶未能輸入一個條目的銷售數字,那麼當他檢查數據有效性時,我需要警告他。

此圖片的消息應該是: 請輸入售出的蘭博基尼Aventador和蘭博基尼威尼諾的單位數量。

在我的形象,黃色的高亮顯示未輸入的數據。在我的文件中,我只有一列(僅一個月)用於銷售,但有數千行(用於汽車)。

Snapshot Image

+0

可以使用條件格式化。就像輸入列A和B中的數據一樣,如果列C,D,E中的單元格爲空,則它們將變爲紅色。如果你選擇msgbox,它會變得刺激,因爲你有一千行的驗證。 – Santosh

+0

感謝santosh的回答。我知道條件格式。事實上,我通過用紅色突出顯示空白單元格來實現條件格式化,但是,由於有很多行,用戶往往忽略它們。正如你所提到的,如果我生成msgbox,會有很多消息,是的,我知道這一點,但我想在單個消息中生成缺失數據列表。所以用戶不會被數十個msgbox激怒。 –

+0

ok將發佈代碼 – Santosh

回答

3

比方說,你的數據看起來像這樣

enter image description here

試試這個

Private Sub CommandButton1_Click() 
    Dim ws As Worksheet 
    Dim lrow As Long, i As Long 

    Set ws = ThisWorkbook.Sheets("Sheet3") 

    With ws 
     lrow = .Range("A" & .Rows.Count).End(xlUp).Row 

     For i = 4 To lrow 
      If Application.WorksheetFunction.CountA(.Range("C" & i & ":E" & i)) <> 3 Then 
       MsgBox "Please Enter the number of units of " & .Range("B" & i).Value & " Sold" 
       Exit Sub 
      End If 
     Next i 
    End With 

    MsgBox "Data Validated" 
End Sub 

這是當你運行該代碼

你會得到什麼3210

而這一切的時候充滿

enter image description here

+0

謝謝你的答案Siddharth。其實,這不是我一直在尋找的,也許我的問題不清楚。我試圖上傳快照的圖像。我相信,快照對於更好地解釋我的困難是一個很好的工具,但是,我無法看到它。你們中的任何一個人都可以在問題中看到圖像嗎? –

+0

是的,我可以看到圖像。我的樣本數據和你的樣本數據幾乎一樣,它確實提醒用戶,因爲你想... –

+0

啊好吧..我不能看到圖像..非常感謝答案Sidharth ..我會嘗試玩並根據我的需求進行定製。萬分感謝。你是搖滾明星!感謝您的即時回覆.. :) –

相關問題