Возвращаемая буква столбца, связанная с Match In Range - PullRequest
0 голосов
/ 06 ноября 2019

Я использую VBA для создания макроса для автоматизации создания таблицы импорта в систему.

Мне нужно извлечь значение даты из отдельной открытой рабочей книги, которая имеет несколько вкладок. Каждая вкладка имеет дату, указанную в отдельной строке или столбце, которая всегда будет где-то в диапазоне A10: C11.

В основном я хочу найти букву столбца, к которой относится «Дата», чтобы позже я мог перебрать все строки в этом столбце.

Поэтому я пытаюсь сделать это:

Dim wb2 As Workbook
Set wb2 = Workbooks("Workbook Name.xlsx")
Dim wb2ws As Worksheet
Dim wb2wsrange As Range
Dim wb2wsdatecolnum As Long
Dim wb2wsdatecollet As String

Set wb2ws = wb2.Worksheets("Name of Desired Worksheet in Separate Workbook")
Set wb2wsrange = wb2ws.Range("A10:C11").Find(What:="Date", LookIn:=xlValues, 
LookAt:=xlWhole)
wb2wsdatecolnum = wb2wsrange.Column
wb2wsdatecollet = Split(wb2ws.Cells(1, wb2wsdatecolnum).Address, "$")(1)

Где я сослался на поиск буквы столбца отсюда: https://www.thespreadsheetguru.com/the-code-vault/vba-code-to-convert-column-number-to-letter-or-letter-to-number

Проблема в том, что wb2wsdatecolnum всегда возвращает «1», даже если значение «Date» попадает в столбец B или CЯ не знаю почему. Это, в свою очередь, заставляет wb2wsdatecollet возвращать «A», даже если оно должно быть «B» или «C».

Есть мысли, почему это происходит?

Спасибо!

1 Ответ

0 голосов
/ 06 ноября 2019

Find возвращает Range, включая ячейки, в которых найдена «Дата». Таким образом, он вернет одну ячейку (A3 или D6).

Application.Match кажется более подходящим для вашей потребности.

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