2016-02-09 35 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