Я искал и искал, но мне еще не удалось найти жизнеспособное решение для простой задачи.
В моей книге есть вкладка "Ввод".На рабочем листе ввода у меня есть заголовки столбцов и различные строки данных.
Я хочу указать конкретный заголовок, в данном случае «Дата сделки», и проверить перечисленные даты, чтобы обеспечить совпадение дат.
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
Почти все, что я делаю, ссылается на объект диапазона, не работает.