Здравствуйте. Скорее всего проблема не большая , но уже долго с ней бьюсь.
Есть макрос, который считает сумму значений в столбце и должен помещать их в нужную ячейку, но этого не происходит.
Есть переменная 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
Методом проб и ошибок пришел к такому выводу - скорее всего числа в первой таблице забиты как-то криво и, возможно ячейки съезжают. Потому что после команды
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?
Да. Там все нормально - значение dou = 5.
Тогда поставьте точку остановки в эту строку:
Cells(11, 26).value = dou
После того, как макрос дойдёт до точки остановки, перейдите на эксель-лист в ячейку Cells(11, 26) и посмотрите, что там, затем вернитесь в VBA и в режиме F8 перейдите на следующую строку кода. Затем снова вернитесь на эксель-лист и посмотрите, что там.
Спасибо. Точка остановки помогла.
В итоге, когда я посмотрел на лист - все было нормально. Но по итогам всего кода нет. Оказалось что в конце кода в эту же ячейку вбивалась ещё одна переменная, которая по стечению обстоятельств была равна 0.