Range.Find - ошибка при открытии книги Excel - VB
Формулировка задачи:
Ошибка в самом конце кода. использую функцию .find для нахождения ячеек по их значению.
Поиск всегда идет в 2 листах эксель из 2 книг.
- По сути это один и тот же документ, только версии от разных дат. цель программы - сравнить изменения.
- Поиск всегда идет одновременно по 2 книгам.
- Когда поиск идет вида A5:A25 все в полном порядке.
Visual Basic - Но когда я пытаюсь использовать адресацию вида R1C1 начинаются проблемы.
- с этой строкой все ОК (objExcelNew это 1я книга, которая открывается) [строка 45 в коде снизу]
Visual Basic - А ТУТ ОШИБКА: (во вложении скрин) [строка 51 в коде снизу]Т.е. почему-то в 1м объекте excel все в порядке, а во 2м поиск не проходит.
Visual Basic ОДНАКО! Если использовать изврат,
то ошибки нету.Visual Basic
- с этой строкой все ОК (objExcelNew это 1я книга, которая открывается) [строка 45 в коде снизу]
Листинг программы
- Private Sub SravnitButtonVPuti()
- Dim objExcelNew As New Excel.Application
- Dim objExcelOld As New Excel.Application
- 'открываем файлы
- objExcelNew.Workbooks.Open TextNew.Text, ReadOnly:=True
- objExcelNew.Visible = True
- objExcelOld.Workbooks.Open TextOld.Text, ReadOnly:=True
- objExcelOld.Visible = True
- 'Задаем переменные для имен листов
- NEW_Sheet = ComboNew.Text
- OLD_Sheet = ComboOld.Text
- 'Активируем сравниваемые листы
- objExcelOld.Worksheets(OLD_Sheet).Activate
- objExcelNew.Worksheets(NEW_Sheet).Activate
- ТУТ ВСЕ ОК - ПОИСК ИДЕТ ЧЕРЕЗ БУКВЕННЫЙ ДИАПАЗОН ВИДА A5:A25
- '=================================== Находим начальные данные для сравнения (общий итог, первый столбец с данными и т.д.) ============
- '---Находим _ряд_ "Общий итог"
- Set ItogoRowNEW_search = objExcelNew.Worksheets(NEW_Sheet).Range("a9:a15000").Find("Общий итог")
- Set ItogoRowOLD_search = objExcelOld.Worksheets(OLD_Sheet).Range("a9:a15000").Find("Общий итог")
- 'Задаем переменные для запоминания номера ряда ОБЩЕГО ИТОГА
- Dim ItogoRowNEW As Integer, ItogoRowOLD As Integer
- ItogoRowNEW = ItogoRowNEW_search.Row
- ItogoRowOLD = ItogoRowOLD_search.Row
- '---
- '---Находим _столбец_ "Общий итог" (тот что справа в конце документа)
- Set ItogoColumnNEW_search = objExcelNew.Worksheets(NEW_Sheet).Range("a8:fff8").Find("Общий итог")
- Set ItogoColumnOLD_search = objExcelOld.Worksheets(OLD_Sheet).Range("a8:fff8").Find("Общий итог")
- 'Задаем переменные для запоминания номера столбца ОБЩЕГО ИТОГА (того что справа в конце документа)
- Dim ItogoColumnNEW As Integer, ItogoColumnOLD As Integer
- ItogoColumnNEW = ItogoColumnNEW_search.Column
- ItogoColumnOLD = ItogoColumnOLD_search.Column
- '---
- '---Находим начальную строку "№стройки Итог"
- Set Initial_StroikaRow_NEW_search = Range(objExcelNew.Worksheets(NEW_Sheet).Cells(8, 1), objExcelNew.Worksheets(NEW_Sheet).Cells(ItogoRowNEW, 1)).Find("* итог")
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- А ТУТ ОШИБКА: (во вложении скрин)
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- Set Initial_StroikaRow_OLD_search = Range(objExcelOld.Worksheets(OLD_Sheet).Cells(8, 1), objExcelOld.Worksheets(OLD_Sheet).Cells(ItogoRowOLD, 1)).Find("* итог")
Решение задачи: «Range.Find - ошибка при открытии книги Excel»
textual
Листинг программы
- 1 ActiveWorkbook.Worksheets(OLD_Sheet).Cells(8, 1).resize(10).Find("20*")
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д