Как найти столбец, используя ссылки на даты? - PullRequest
0 голосов
/ 13 марта 2020

Я работаю с таблицами, поэтому все они являются ссылочными в ListObjects. Мне нужно знать столбец даты в ListObjects.HeaderRowRange, используя диапазон внутри другой таблицы. Я пробовал find и match метод. Как в следующем примере:

Sub test()
    Dim mycell As Range
    Dim myrange As Range
    Dim SourceTbl As ListObject
    Dim ResultTbl As ListObject

    Set SourceTbl = WSEscoreCocho.ListObjects("TBEscore")
    Set ResultTbl = WSBD.ListObjects("TBBD")
    Set myrange = ResultTbl.ListColumns(5).DataBodyRange

    For Each mycell In myrange
        mycell.Value = SourceTbl.HeaderRowRange.Find(mycell.Offset(0, -1).Value, LookAt:=xlWhole).Column
        mycell.Value = WorksheetFunction.Match(mycell.Offset(0, -1).Value, SourceTbl.HeaderRowRange, 0)
    Next mycell

End Sub

Но не работает. Этот код возвращает «переменная объекта не была определена». Кажется, проблема в хранении данных. Мой первый mycell.offset(0,-1).value - 09.03.2020 (дд / мм / гг). Без кавычек. Я пробовал Clng() и Cdate. Как я могу обойти эту проблему?

1 Ответ

0 голосов
/ 13 марта 2020

Это можно решить, просто объявив mycell.offset(0,-1).value как string. Код будет:

Sub test()
    Dim mycell As Range
    Dim myrange As Range
    Dim SourceTbl As ListObject
    Dim ResultTbl As ListObject
    Dim mydate as String

    Set SourceTbl = WSEscoreCocho.ListObjects("TBEscore")
    Set ResultTbl = WSBD.ListObjects("TBBD")
    Set myrange = ResultTbl.ListColumns(5).DataBodyRange

    For Each mycell In myrange
       mydate = DateSerial(Year(mycell.Offset(0, -1).Value), Month(mycell.Offset(0, -1).Value), Day(mycell.Offset(0, -1).Value)) 
       mycell.Value = SourceTbl.HeaderRowRange.Find(mydate, LookAt:=xlWhole).Column
    Next mycell
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...