VBA - Найти ColumnLetter - Несоответствие типов - PullRequest
0 голосов
/ 16 октября 2018

Цель состоит в том, чтобы найти определенную строку во всей строке (это всегда строка 1).Определите ячейку, содержащую строку.Найдите букву столбца этой ячейки (вместо номера столбца).

У меня есть функция, которая берет букву столбца из диапазона, который я «украл» с другой страницы в Stackoverflow:

Function FnColFromRange(rInput As Range) As String
    FnColFromRange = Split(rInput.Address, "$")(1)
End Function

А затем у меня есть подпрограмма для хранения буквы столбца в строке с именем "colLetter"

Dim colLetter As String
With Workbooks("Wb.xlsx").Worksheets("Ws")
    Set myStringCell = .Rows(1).Find(myString)
    colLetter = FnColFromRange(myStringCell.Address)
End With

Но она всегда застревает в строке "colLetter", говоря Type Mismatch

1 Ответ

0 голосов
/ 16 октября 2018

Проверьте, существует ли реальный диапазон, возвращаемый методом .Find().Затем, как прокомментировал @BruceWayne, вероятно, ошибка в myStringCell.Address:

Dim colLetter As String
With Workbooks("Wb.xlsx").Worksheets("Ws")
    If Not .Rows(1).Find(myString) Is Nothing Then
        Set myStringCell = .Rows(1).Find(myString)
        colLetter = FnColFromRange(myStringCell)
    Else
        MsgBox "BOO!"
    End If
End With

Однако что-то подобное делает функцию ненужной, так как myStringCell имеет свойство с именем .Column, и выможет ссылаться на него или использовать 1 вкладыш вместо функции:

Dim colLetter As String
With Workbooks("Wb.xlsx").Worksheets("Ws")
    If Not .Rows(1).Find(myString) Is Nothing Then
        Set myStringCell = .Rows(1).Find(myString)
        colLetter = Split(myStringCell.Address, "$")(1)
        Debug.Print myStringCell.Column 'if you can use the numeric column
    Else
        MsgBox "BOO!"
    End If
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...