首页 > 解决方案 > VBA“if”语句是否能够根据当前单元格选择产生不同的结果?

问题描述

如果标题具有特定值,我有一个宏旨在选择工作表中的整个列。在宏的该部分运行之后。我想检查电子表格的哪一部分被突出显示,并使用 IF 语句从那里移动。如果选择的是单个单元格(在本例中为 A2),则宏应沿一条路径前进。如果选择是一整列,那么它应该走不同的路径。目前它只找到 if 选择的第一部分。在下面的代码的情况下,它返回 MsgBox " The " & xStr & " column has not found." 不管当前的选择是什么。

我曾尝试在 Active.range.select 上使用 <>、is 和 isnot 参数,但这就是我目前的知识结束的地方。我是 VBA 的初学者,并且一直在使用大量的试验错误/在线帮助来拼凑这段代码。

Sub Testingifthen()
'
' Testingifthen Macro
'

 Range("A2").Select
  numRows = Range("A" & Rows.Count).End(xlUp).Row

Dim xRg As Range
Dim xRgUni As Range
Dim xFirstAddress As String
Dim xStr As String

    On Error Resume Next
    xStr = "Zip Code"
    Set xRg = Range("A2:CD2").Find(xStr, , xlValues, xlWhole, , , True)
    If Not xRg Is Nothing Then
        xFirstAddress = xRg.Address
        Do
            Set xRg = Range("A2:CD2").FindNext(xRg)
            If xRgUni Is Nothing Then
                Set xRgUni = xRg
            Else
                Set xRgUni = Application.Union(xRgUni, xRg)
            End If
        Loop While (Not xRg Is Nothing) And (xRg.Address <> xFirstAddress)
    End If
    xRgUni.EntireColumn.Select

    If Active.Range.Select <> Range("A2") Then

   MsgBox " The " & xStr & " column has not been found."

    Else

   MsgBox " The " & xStr & " column has been found."

   End If


'
End Sub

标签: excelvba

解决方案


    Dim searchstr As String
    Dim searchrange As Range

    Set searchrange = ActiveSheet.Range("A2:CD2") 'headers

    searchstr = "Zip Code"

    If Not searchrange.Find(what:=searchstr) Is Nothing Then 'check if address is found
        MsgBox (searchstr & " Column Found")
    Else
        MsgBox (searchstr & " Column Not Found")
    End If

推荐阅读