Страницы: 1
RSS
Обновление умной таблицы из другой книги. Ошибка после присвоения ячейке гиперссылки., Вылетает странная ошибка на следующей строчке кода после присвоения гиперссылки!
 
Добрый день!

Имею два файла с умными таблицами:
- Первый файл (1 Цены материалов (основная таблица)) содержит исходные данные(основная таблица) с ценами материалов и ссылками на сканы накладных поступлений и постоянно обновляется чтобы быть актуальной.
- Второй (2 Калькулятор (таблица принимающая)) имеет в ячейке(R1C10) путь к первому файлу и кнопку (R1C8:R2C8), запускающую макрос обновления цен, накладных и ссылок к сканам, путем поиска совпадения наименований материалов, проверки идентичности единиц измерения и последующем переприсвоение значений ячеек и замены или добавления гиперссылок из основной таблицы в данную. Далее эта таблица используется в расчетах на других листах данной книги (в примере листы удалены).


Проблема:
Макрос работает и обновляет данные до того момента когда нужно в ячейку с наименованием накладной в которой не было гиперссылки, добавить гиперссылку. !Не заменить ранее имеющуюся на новую, а именно добавить гиперссылку в ячейку в которой раньше не было гиперссылки.
Причем ошибка выдается не на самой строке кода где добавляется гиперссылка, а на следующей строчке кода, где присваивается значение в следующей ячейке таблицы. И самое интересное что если в отладчике нажать кнопку Continue (F5), то ошибка не повториться на этой строке кода (как обычно с повторением ошибки), а строка с кодом присвоения выполниться и цикл пойдет далее и ошибка появится следующей итерации где необходимо добавить гиперссылку, и опять на следующей строчке кода. Причем если эту строчку кода (с присвоением значения следующей за гиперссылкой ячейкой) удалить или комментировать, то ошибка перейдет на следующую строку кода.

Код приложил в текстовом файле потому что анти спам не дает его вставить в пост.
Сами файлы во вложении
Файлы прикладываю. (скорее всего надо будет в файле 2 Калькулятор (таблица принимающая) в ячейке R1C10 указать путь к файлу 1 Цены материалов (основная таблица) потому что у меня указаны абсолютные пути).
Изменено: AmForGen - 11.05.2026 15:21:07
 
В каком макросе возникает ошибка? В Вашем текстовом файле кусок кода непонятно откуда.
В файле 4 модуля по несколько макросов в каждом. Плюс форма и модуль классов
Вы понимаете что такое файл-ПРИМЕР?
Изменено: Sanja - 11.05.2026 17:28:02
Согласие есть продукт при полном непротивлении сторон
 
Прошу прошения! я очень много времени потратил на то чтобы пройти фаервол и чтобы мое сообщение опубликовали - почему кусок кода из макроса он принимать не хочет и запрещает отправлять сообщение! Поэтому сократил сообщение до минимума! Видимо через чур.
Код с ошибкой находится в PriceUpdateFunction метод Sub ОбновитьЦеныМатериалов который вызывается нажатием кнопки "обновить цены"
 
Вот строка через которую я присваиваю гиперссылку ячейке с наименованием накладной
Код
  .Hyperlinks.Add Anchor:=.cells(cellMaterial.Row, .Range("Цены_материалов[[#Headers],[Наименование накладной]]").Column), Address:=WB.Sheets("Цены материалов").Range("Цены_материалов" & "[" & "Наименование накладной" & "]").Item(i).Hyperlinks(1).Addres
а в этой возникает ошибка
Код
.cells(cellMaterial.Row, .Range("Цены_материалов[[#Headers],[Дата накладной]]").Column).Value = WB.Sheets("Цены материалов").Range("Цены_материалов" & "[" & "Дата накладной" & "]").Item(i)
 
Если в файле "2 Калькулятор (таблица принимающая)" в ячейке (R1C10) указать полный путь к файлу "1 Цены материалов (основная таблица)" и нажать кнопку обновить цены. То где-то на 206 строке вылетит ошибка. Которая пропадает сама собой если просто нажать Continue (F5) пропадает.
 
Файл 1.Цены... не открывается. Точнее открывается просто пустое окно Excel
Согласие есть продукт при полном непротивлении сторон
 
Да файл был скрыт (Вкладка Вид - группа Окно - кнопка отобразить).
Отобразил, сохранил, подгрузил заново файлы.
 
Там, по-хорошему, вообще все переписать нужно. Этот код Вам ИИ писал? Что это за синтаксис, прости Господи?
Объясните логику работы макроса обычными словами
Согласие есть продукт при полном непротивлении сторон
 
Подгрузил файл заново добавил в коде описание. Делал код сам методом проб и ошибок. синтаксис сформирован горьким опытом дальнейшей поддержки этого дела. Ссылаю на ячейки умной таблицы через ссылки на наименования столбцов, для того чтобы не переделывать код если потом добавится новый столбец в середину таблицы.

Меня интересует нет ли ошибки в строке где я добавляю гиперссылку в ячейку?

Код
.Hyperlinks.Add Anchor:=.cells(cellMaterial.Row, .Range("Цены_материалов[[#Headers],[Наименование накладной]]").Column), Address:=WB.Sheets("Цены материалов").Range("Цены_материалов" & "[" & "Наименование накладной" & "]").Item(i).Hyperlinks(1).Addres
Пояснение
Код
.Range("Цены_материалов[[#Headers],[Наименование накладной]]").Column - номер столбца [Наименование накладной] (в книге принимающей данные)
Код
cellMaterial.Row - номер текущей строки в которую надо добавить данные (в книге принимающей данные)
Код
.Range("Цены_материалов" & "[" & "Наименование накладной" & "]").Item(i) - ссылка на i-ую ячейку(для которой наименования материалов совпадают)  в диапазоне данных столбца "Наименование накладной". (в книге из которой данные передаются) 

Почему то сама строка (добавления гиперссылки) исполняется , но следующая где идет присвоение данных - выдает ошибку.
Но если добавление гиперссылки закомментировать - код исполняется без ошибок...
Страницы: 1
Читают тему
Наверх