Функция поиска Excel VBA - не работает с ячейками формулы - PullRequest
0 голосов
/ 18 июня 2019

Невозможно заставить FIND работать с ячейкой формулы, содержащей текст, и найти результат на листе в пределах диапазона.

Я создал кнопку, которая при нажатии должна смотреть на ячейку, брать данные изатем найдите результат в столбце на другом листе, используя точное совпадение.

D11 содержит формулу, которая возвращает текстовый результат vlookup. Когда я нажимаю кнопку, я делаю следующее

Sub Button3_Click()
    Dim strSearch As String
    Dim rng As Range
    Dim rng1 As Range
    Dim ws As Worksheet
    Dim wb As Workbook

    Set wb = Application.ActiveWorkbook
    Set ws = wb.Worksheets("Auspost_Data")

    strSearch = Worksheets("Report_Tool").Range("D11")
    wb.ws.Range("D:D").Select
    Selection.Find(strSearch)

End Sub

Я ожидаю, что find берет текстовое значение и находит точное совпадение в диапазоне столбцов.

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

Пожалуйста, попробуйте что-то вроде этого ...

Sub Button3_Click()
    Dim ws As Worksheet, wsCriteria As Worksheet
    Dim strSearch As String
    Dim rng As Range


    If SheetExists("Auspost_Data") Then
        Set ws = Worksheets("Auspost_Data")
    Else
        MsgBox "There is no Sheet called " & ws.Name & " in the ActiveWorkbook.", vbCritical, "Sheet Not Found!"
        Exit Sub
    End If

    If SheetExists("Report_Tool") Then
        strSearch = Worksheets("Report_Tool").Range("D11")
    Else
        MsgBox "There is no Sheet called Report_Tool in the ActiveWorkbook.", vbCritical, "Sheet Not Found!"
        Exit Sub
    End If

    If strSearch = "" Then
        MsgBox "Search string is empty, there is nothing to find.", vbExclamation, "Empty Search String!"
        Exit Sub
    End If

    Set rng = ws.Range("D:D").Find(what:=strSearch, LookIn:=xlValues, lookat:=xlWhole)

    If Not rng Is Nothing Then
        MsgBox "The search string " & strSearch & " is found in the cell " & rng.Address(0, 0) & ".", vbInformation, strSearch & " Found!"
    Else
        MsgBox "The search string " & strSearch & " was not found.", vbExclamation, strSearch & " Found!"
    End If

End Sub


Function SheetExists(shName As String) As Boolean
    Dim sh As Worksheet
    On Error Resume Next
    Set sh = Worksheets(shName)
    On Error GoTo 0
    If Not sh Is Nothing Then SheetExists = True
End Function

Чтобы выбрать диапазон, если он найден:

Заменить последний оператор IF этим ...

If Not rng Is Nothing Then
    ws.Select
    rng.Select
Else
    MsgBox "The search string " & strSearch & " was not found.", vbExclamation, strSearch & " Found!"
End If

Обратите внимание, что я удалил MsgBox, если найден rng, который, я думаю, здесь не нужен, особенно когда код выбирает найденный rng.

0 голосов
/ 18 июня 2019

Попробуйте:

Sub Button3_Click()

    Dim strSearch As String
    Dim rng As Range
    Dim rng1 As Range
    Dim ws As Worksheet
    Dim wb As Workbook
    Dim fnd As Range

    Set wb = Application.ActiveWorkbook
    Set ws = wb.Worksheets("Auspost_Data")

    strSearch = Worksheets("Report_Tool").Range("D11")
    Set fnd = ws.Range("D:D").Find(strSearch)

    MsgBox fnd.Address

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...