Страницы: 1
RSS
Вставка ф-лы содержащей переменные с помощью макроса
 
Добрый день. Пожалуйста подскажите.
Есть Public Function "INTD" (интерполяция). Синтаксис следующий: 1. Выделяем массив значений. 2. Число по вертикали. 3. Число по горизонтали.
Массив значений неизменен и находится в одном и том же месте. Проблема с остальными исх данными. Они вычисляются, но их местоположение может быть разным. Для ссылки на конкретную ячейку в коде отвечает переменная total. т.е. Cells(10+total, 10) это местоположение "Число по вертикали". Аналогично с третьим. Как мне правильно написать код, чтобы макрос вставлял ф-лу intd в нужную мне ячейку. В прилагаемом файле, последняя строка кода и есть моя проблема. Помогите
 
Цитата
Stillet написал: последняя строка кода и есть моя проблема
Не могу воспроизвести "проблему". При по-шаговом проходе по коду Debagger до последней строки не доходит из-за ошибки Overflow. Переменная z периодически равна 0, и в этой строке
Код
y = x / z 'деление каждого слоя на составляющие
Вы на него (на 0) делите.
По вопросу: может Вам посмотреть в сторону свойства Cells.Offset(...)? Просто непонятно какая ячейка является "нужной" Вам
Согласие есть продукт при полном непротивлении сторон
 
Возможно, так
Код
Cells(10 + total, 15).FormulaR1C1Local = "=intd(глины!R[-6]C[-7]:R[4]C," & Cells(10 + total, 10) & "," & Cells(10 + total, 11) & ")"
 
Здравствуйте еще раз. Прощу прощения, что пропал. Моя ошибка, что я не дал больше информации. Перед началом работы кода, в котором есть проблема, нужно нажать на кнопку ресет. Проблему с делением на ноль быть не может, т.к. по моему мнению переменная z тут не причем. Если убрать строчку кода в котором была ошибка то @overflow@ не появляется.  Уважаемый Казанский, вставил Вашу строчку в код. Не помогло. Прилагаю исправленный файл. Жду ответов
 
Прошу прощения за последний пост. Решил проверить и действительно это имеет место быть. Весьма странно, т.к. до этого исх код содержащий переменную z не изменял и он хорошо работал...  
Изменено: Stillet - 07.04.2015 12:39:42
 
Вообщем ситуация следующая. Открываю этот файл, удаляю проблемную последнюю строку. Нажимаю Reset жму Start и Макрос проход ВСЕ БЕЗ ОШИБОК. Если нажать Reset и Старт опять выдает Overflow. Что это такое?
 
Stillet, Sahja Вам уже писал. У Вас деление на 0. Где-то тут читал, что объединение ячеек - зло. Вы считываете значение х из 8-го столбца с объединением. Значение в этом диапазоне принадлежит верхней ячейке, в остальных пусто, т.е. х=0. Далее z=x/2=0, потом y=x/z=0/0. Тут и вылетает (ошибка overflow). У меня, кстати, выдает ошибку еще раньше, когда пытается вставить строку, опять же, в объединенный диапазон по 8-му столбцу.
Код
Cells(b + 1, 8).EntireRow.Insert CopyOrigin:=xlFormatFromLeftOrAbove  
Со строками, где участвует переменная total тоже не все в порядке. Номер строки - это целое число, а значение total описано как Double и может принимать дробное значение.  
Изменено: Joiner - 07.04.2015 12:41:10
Никому не отвечай, кoгда ты зол, ничего не обeщай, когда ты счастлив, никогда нe решай, когда ты грустeн.
 
Да я согласен, опять же. Если просто закрыть файл, и опять в него зайти, удалив до расчета проблемную строку (последнюю), то он все считает без вылета ошибки... мистика для меня. Я так понимаю надо полностью переделывать код, без объединения строк...
Страницы: 1
Наверх