Excel VBA Макросы. Проблема с командой cells.value

Автор Michael, 19 февраля 2018, 19:58

Michael

Здравствуйте. Скорее всего проблема не большая , но уже долго с ней бьюсь.
Есть макрос, который считает сумму значений в столбце и должен помещать их в нужную ячейку, но этого не происходит.
Есть переменная dou
Dim dou as integer

При попытке внести в ячейку
Cells(11, 26).value = dou - в ячейке остаётся 0
При этом cells(11, 26).value = 5 - в ячейке появляется 5
Label1.caption = dou - выводит 5
Что может быть не так?
Спасибо

Администратор

Значит проблема с переменной "dou". В режиме F8 тестируйте макрос, наводите курсор на переменную "dou" и смотрите, что в ней.

Администратор

Или поставьте точку остановки в эту строку:
Cells(11, 26).value = dou

Затем наведите курсор на переменную "dou" и посмотрите всплывающую подсказку.

Возможные причины:
1. Cells(11, 26) - это активный лист. Активный лист - это лист, который отображается на мониторе. Возможно в момент работы этой строки, активный лист другой.

2. Сделана опечатка в переменной "dou". Вы думаете, что работаете с переменной "dou", а на самом деле это может быть другая переменная. Чтобы это выяснить, используйте режим "Option Explicit": https://forumvba.ru/index.php?topic=402.0

Michael

Методом проб и ошибок пришел к такому выводу - скорее всего числа в первой таблице забиты как-то криво и, возможно ячейки съезжают. Потому что после команды
Cells(11, 26).value = dou (что выдает 0)
команда Cells(11, 26).value = 5 тоже выдает 0
хотя сама по себе Cells(11, 26).value = 5 - выдает 5.

Значения переменных проверял - они совпадают с нужными и label1.caption = dou - также выводит 5, как и надо.

Формат ячеек -общий и там и там (пробовал и там и там числовой - не помогает).

Может быть есть какие то предположения, как это исправить?


Администратор

В режиме F8 работали, или ставили точку остановки сюда: Cells(11, 26).value = dou?

Michael

Да. Там все нормально - значение dou = 5.

Администратор

Тогда поставьте точку остановки в эту строку:
Cells(11, 26).value = dou

После того, как макрос дойдёт до точки остановки, перейдите на эксель-лист в ячейку Cells(11, 26) и посмотрите, что там, затем вернитесь в VBA и в режиме F8 перейдите на следующую строку кода. Затем снова вернитесь на эксель-лист и посмотрите, что там.

Michael

Спасибо. Точка остановки помогла.
В итоге, когда я посмотрел на лист - все было нормально. Но по итогам всего кода нет. Оказалось что в конце кода в эту же ячейку вбивалась ещё одна переменная, которая по стечению обстоятельств была равна 0.