Я получаю сообщение об ошибке при запуске этого макроса: «Переменная объекта или переменная блока не установлена»
Я пытаюсь найти дату в строке 3 рабочего листа на основе ввода пользователя (месяц и год они хотят сделать отчет). Когда дата найдена, мне нужно сохранить значение 13-й строки столбца, в котором находится дата. Значение 13-й строки будет сохранено как AmountInv .
Даты являются последними день каждого месяца в формате ММ / ДД / ГГГГ. Я использую DateSerial (), чтобы получить последний день. Поскольку 0 возвращает последний день предыдущего месяца, я изменил исходный ввод пользователя как « CurrentMonth + 1». Это сработало в тесте, и в режиме отладки я вижу, что MyDate - правильная дата, которая мне нужна. Но aFind говорит, что его значением является «Nothing», что приводит к появлению ошибки для ColumnLetterA. Я почти уверен, что он просто не находит дату в строке 3 (хотя она определенно есть, в настоящее время в столбце R). Я также попытался изменить дату на серийный номер с помощью CLng (). Ни то, ни другое не работает.
Дата в электронной таблице отформатирована как 19 октября, и если вы выберете ячейку, в поле формулы появится 31.10.2009. Я попытался отформатировать дату в обоих направлениях, а также преобразовать ее в числовой серийный номер. Я не могу думать ни о чем другом, чтобы попробовать. Любая помощь будет принята с благодарностью!
Dim aFind As Range
Dim AmountInv As Variant
Dim ColumnLetterA As String
Dim MyDate
Dim MonthEdit As Variant
Dim DateSerialNum As Long
MonthEdit = CurrentMonth + 1
MyDate = DateSerial(CurrentYear, MonthEdit, 0)
DateSerialNum = CLng(MyDate)
With Range("A3:BB3")
Set aFind = .Find(What:=DateSerialNum, LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False)
End With
ColumnLetterA = Split(Cells(1, aFind.Column).Address, "$")(1)
AmountInv = Range(ColumnLetterA & "13")