Надеясь, что у кого-то может быть подсказка, могу ли я что-нибудь сделать, чтобы обойти проблему, с которой я сталкиваюсь. Может быть сложно добавить код, который я использую, так как он очень большой.
У меня есть таблица с календарными датами в первом столбце. Все они представлены в формате дд/мм/гггг. В VBA я хочу найти дату и найти номер строки в календаре, используя следующее:
FirstRow = Workbooks(WorkbookSelected.Name).Sheets("Tables").Columns(1).Find(ConfirmedDate, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookAt:=xlWhole).Row
Подтвержденная дата хранится как переменная даты, которая также берется из календаря, но к ней добавляются дни. Я ищу в двух разных книгах, чтобы найти FirstRow. Если обе книги находятся в одном приложении/экземпляре Excel, этот код работает нормально.
Но если я открою вторую книгу в новом экземпляре Excel, возникнут ошибки, потому что дата не найдена. Что-то происходит с датой во 2-м приложении. Если я использую format(ConfirmedDate, "dd/mm/yyyy")
, он найдет его во второй книге. Но этот код не будет работать в исходной книге. Код, аналогичный приведенному выше, но просто ссылающийся на экземпляр Excel, который необходимо изучить. Я получаю Runtime Error 91, когда он не находит его.
FirstRow = ExcelInstanceSelected.Workbooks(WorkbookSelected.Name).Sheets("Tables").Columns(1).Find(ConfirmedDate, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookAt:=xlWhole).Row
FirstRow = ExcelInstanceSelected2.Workbooks(2ndWorkbookSelected.Name).Sheets("Tables").Columns(1).Find(ConfirmedDate, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookAt:=xlWhole).Row
Я пытаюсь найти способ найти дату в календаре независимо от того, какое приложение Excel я использую. Я попытался открыть книгу с локальным значением true (не помогает). Я пробовал комбинации формата, cdate, cdbl, lookin:=xlformulas. Ничто не будет работать с обеими книгами.
Это сводит меня с ума. Я могу только предположить, что .find во второй книге меняет формат сохраненной ConfirmedDate на американский формат m/dd/yyyy. Я просто не могу найти способ убедиться, что обе даты могут быть отформатированы в дд/мм/гггг в отношении того, как они начинаются.
Большое спасибо за любую помощь.
Чел
Workbooks(WorkbookSelected.Name).Sheets
, а не простоWorkbookSelected.Sheets
? - person K.Dᴀᴠɪs   schedule 09.02.2020SUM(1+2) = 3
вместо3 = 3
. Вы без необходимости используете функцию (Workbooks()
) для получения объекта рабочей книги, когда у вас уже есть объект рабочей книги. - person K.Dᴀᴠɪs   schedule 09.02.20201
=1-Jan-1900
или1-Jan-1904
. VBA имеет тип данных date, и найти даты на листе Excel может быть сложно. Взгляните на Excel VBA Range.Find Date That is a Formula - person Ron Rosenfeld   schedule 09.02.2020