2016-02-09 63 views
0

我想通過表中的選擇進行搜索,找到一個值,然後返回特定的結果。Excel VBA宏:從選擇中搜索空白

我想的條件是:

  1. IF '名稱'=空白,返回 「N/A」。
  2. 如果'結果'=空白,或者「不適用」,則返回「不適用」。
  3. 如果'計數'= 0,返回「否」,否則「是」。

到目前爲止,我已經試過代碼如下:

Sub DoStuffIfNotEmpty() 

    Set M = Selection 

    If Not IsEmpty(M) Then 
    MsgBox "I'm not empty!" 

    Else 
    MsgBox "Empty Value" 

    End If 

End Sub 

也可對照,這裏是我創建的測試表:

Reference Image

+0

記住,像'=「」'不會被算作「空」 ......我建議像'LEN(M )= 0' ...但是...你想如何搜索?有多行 - >多個輸出,你想要什麼以及如何「答案」? –

回答

0

Test()設置要檢查的工作表和單元格 - 如果要處理單元格列表你可以在這裏完成 - 並調用DoStuffIfNotEmpty,它按順序檢查名稱,結果和計數列。它甚至還沒有接近是優雅,但你去那裏...

Sub Test() 
    Dim cWorksheet As Worksheet 
    Dim CRange As Range 

    Set cWorksheet = ActiveWorkbook.Sheets("Sheet1") 
    Set CRange = cWorksheet.Range("A2:C2") 
    MsgBox DoStuffIfNotEmpty(cWorksheet, CRange), vbOKOnly 
End Sub 

Function DoStuffIfNotEmpty(CurrWorksheet As Worksheet, CurrRange As Range) As String 

    CurrWorksheet.Select 
    CurrRange.Select 

    Set m = Selection 

    If m.Cells(1, 1) = "" Or IsNull(m.Cells(1, 1)) Then 
     retmsg = "N/A" 
    Else 
     If m.Cells(1, 2) = "" Or IsNull(m.Cells(1, 2)) Or m.Cells(1, 2) = "N/A" Then 
      retmsg = "N/A" 
     Else 
      If m.Cells(1, 3) = 0 Then 
       retmsg = "No" 
      Else 
       retmsg = "Yes" 
      End If 
     End If 
    End If 
    DoStuffIfNotEmpty = retmsg 

End Function