Может ли оператор VBA «если» выдавать разные результаты в зависимости от текущего выбора ячеек? - PullRequest
0 голосов
/ 01 июля 2019

У меня есть макрос, который предназначен для выбора всего столбца на листе, если заголовок имеет определенное значение.После этого раздел макроса запускается.Я хочу проверить, какая часть электронной таблицы выделена, и перейти оттуда к оператору IF.Если выделение представляет собой одну ячейку (в данном случае A2), то макрос должен идти по одному пути.Если выделение является целым столбцом, то он должен идти другим путем.В настоящее время это только поиск первой части if select.В случае кода ниже он возвращает MsgBox «Столбец« & xStr & »не найден».независимо от текущего выбора.

Я пытался использовать параметры <>, is и not на Active.range.select, но на этом мои знания заканчиваются.Я новичок в 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

1 Ответ

0 голосов
/ 01 июля 2019
    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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...