как найти заголовок столбца и вернуть номер столбца vba - PullRequest
1 голос
/ 26 февраля 2020

Я ищу указанный заголовок столбца c в первой строке листа с именем «Ссылка» и написал следующее:

colnum = Application.WorksheetFunction.Match("Reference", 1:1,0)

однако он говорит, что с моим синтаксисом что-то не так , Я не уверен, что не так. Может кто-то исправить это так, чтобы он возвращал правильный номер столбца, когда он находит заголовок «Ссылка» в первой строке моего листа.

Ответы [ 3 ]

0 голосов
/ 26 февраля 2020

Попробуйте

colnum = Application.WorksheetFunction.Match("Reference", _
         Worksheets("Reference").Rows(1), 0)

Но помните, что вы получите ошибку, если совпадение не найдено. Вы должны будете сделать правильную обработку ошибок. Например,

colnum = "Not Found"
On Error Resume Next
colnum = Application.WorksheetFunction.Match("Reference", _ 
         Worksheets("Reference").Rows(1), 0)
On Error GoTo 0

Debug.Print colnum

Вышеуказанное явно не будет обрабатывать ошибки имени листа. Для этого вы можете использовать что-то вроде

     On Error GoTo Whoa

     colnum = Application.WorksheetFunction.Match("Reference", _
              Worksheets("Reference").Rows(1), 0)

LetsContinue:
     Debug.Print colnum

     Exit Sub
Whoa:
     colnum = Err.Description
     Resume LetsContinue

Вы также можете попробовать .Evaluate для решения с одним вкладышем

Application.Evaluate("=IFERROR(MATCH(""Reference"",Reference!1:1,0),""Not Found"")")

PS : Кстати, я слегка склонен к .Find:)

0 голосов
/ 15 апреля 2020

завершите VBA noob здесь, но вы, возможно, неправильно написали 'column'? Вы написали 'colnum' Пожалуйста, не обращайте внимания, если это не имеет к этому никакого отношения

0 голосов
/ 26 февраля 2020

Попробуйте следующие подпункты.

Sub FindHeader()
Dim sht As Worksheet
Dim Rng As Range

    Set sht = Worksheets("Sheet1") ' Define your desired sheet
    Set Rng = sht.Cells.Find("Reference") 'Find your desired value/text

        If Not Rng Is Nothing Then 'If found then do operation
            MsgBox Rng.Column 'You can do other actions here instead of messagebox
        Else
            MsgBox "Nothing found"
        End If

    Set sht = Nothing 'Clear memory
    Set Rng = Nothing

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