VBA range.find - ссылка на объект диапазона - PullRequest
0 голосов
/ 21 мая 2018

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

В моей книге есть вкладка "Ввод".На рабочем листе ввода у меня есть заголовки столбцов и различные строки данных.

Я хочу указать конкретный заголовок, в данном случае «Дата сделки», и проверить перечисленные даты, чтобы обеспечить совпадение дат.

With DataSheet
Set dateCellCheck = .Range("A1:Z1").Find(What:=("Trade Date"), _
                    LookIn:=xlValues, lookat:=xlWhole, _
                    MatchCase:=False, searchformat:=False)  'find column titled trade date'

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

Затем макрос форматирует данные даты:

If Not dateCellCheck Is Nothing Then
    dateCellCheck.EntireColumn.NumberFormat = "m/dd/yyy"
Else
    MsgBox "Trade Date Column Not Found"
    Exit Sub
End If

Все идет нормально.Также работает как задумано.

Вот где я вешаю трубку.Следующим шагом является поиск по всему столбцу торговых дат, основанный на найденной ячейке в первом поиске, чтобы увидеть, соответствует ли какая-либо дата сегодняшней дате.в приведенном ниже коде, когда я использую «K: K», код работает, но я не могу найти решение, которое работает с чем-либо, ссылающимся на столбец dateCellCheck.

Set dateCell = .Range("K:K").Find(What:=CDate(Date), LookIn:=xlValues, lookat:=xlWhole, MatchCase:=False, searchformat:=False)

Я пытался ссылаться на столбец, диапазон.entirecolumn property.Я попытался установить дополнительную переменную диапазона и сохранить адрес из dateCellCheck.Каждый раз, когда я заменяю «K: K» любым типом свойства диапазона, я получаю «Ошибка во время выполнения 1004: метод« Range of object'_worksheet »Failed.Кажется, даже когда моя переменная сообщает правильный адрес, я все равно получаю сообщение об ошибке.Кто-нибудь может объяснить это, и есть ли простое решение, чтобы это исправить?

Некоторые вещи, которые я пробовал безуспешно:

.range("dateCellCheck").find 
.range("dateCellCheck").entirecolumn.find 

Set newrange = dateCellCheck.entireColumn
.range("newrange").find

Почти все, что я делаю, ссылается на объект диапазона, не работает.

...