powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA макрос
17 сообщений из 17, страница 1 из 1
VBA макрос
    #38711939
ssaich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Записанным макросом копирую данные из листа в другой лист и использую его как черновик

Код: vbnet
1.
2.
3.
4.
5.
6.
 Columns("A:O").Select
    Range("A2").Activate
    Selection.Copy
    Sheets("Лист2").Select
    Columns("A:O").Select
    ActiveSheet.Paste



Потом кодом иду в цикле перебираю ячейки

ну что то вроде

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Do While Sheets("Лист2").Cells(ii, 1).Value <> ""
If Str1 = Sheets("Лист2").Cells(ii, 3).Value And Str1 <> "0" Then
Summa = Summa + Sheets("Лист").Cells(ii, 10).Value
Sheets("Лист2").Cells(ii, 3).Value = "0"
End If
ii = ii + 1
Loop



в отладчике смотрю, что иногда в ячейках появляются не понятные мне значения, которых просто ну не может быть и не откуда им взяться.
соответственно результат получается не правильный, НО! если я копирую лист , данные на другой лист руками- копипастой, и запускаю макрос еще раз, все считается так как положено.

Помогите разобраться, почему это происходит, и могут ли формулы в ячейках влиять как то ? Хоят я пробовал и пересчитывал абсолютно все в макросе.
...
Рейтинг: 0 / 0
VBA макрос
    #38711959
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ssaich, ii=0 в начале кода?!
...
Рейтинг: 0 / 0
VBA макрос
    #38711960
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин, Summa=0, ii=1
...
Рейтинг: 0 / 0
VBA макрос
    #38711961
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ssaichв отладчике смотрю, что иногда в ячейках появляются не понятные мне значения, которых просто ну не может быть и не откуда им взяться.Нормально так... ты почто в отладчик лезешь, если его использовать не умеешь? сперва поучись, что ли...

Посмотри текущее состояние - окна locals и watchdog в помощь.
Просчитай, как и что изменится после выполнения ОДНОГО текущего оператора.
Выполни ОДИН оператор.
Сравни ожидаемое и полученное.
Не совпадает? Вот теперь разбирайся, почему твои расчёты не оправдались. Ищи свою ошибку.

Машина - она ж дура. Она делает строго то, что ты сказал. А вовсе не то, что ты хотел.
...
Рейтинг: 0 / 0
VBA макрос
    #38711965
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и вообще, функция =СУММЕСЛИ() вам в помощь, нафига тут макросы?!
...
Рейтинг: 0 / 0
VBA макрос
    #38712013
ssaich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlanBssaich, ii=0 в начале кода?!

все есть
...
Рейтинг: 0 / 0
VBA макрос
    #38712017
ssaich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlanBблин, Summa=0, ii=1

Сумма обнуляется в конце, да прикол в том что ,я удаляю из листа все кроме двух строк, считает не правильно, внимание !!!
можно назвать как чудеса, я оставляю другие две строки, они считаются сразу и правильно!
...
Рейтинг: 0 / 0
VBA макрос
    #38712032
ssaich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlanBи вообще, функция =СУММЕСЛИ() вам в помощь, нафига тут макросы?!

Расскажите это простому пользователю который ничего не хочет делать, кроме как нажать на кнопку "Получить сделать все красиво и классно!" )
...
Рейтинг: 0 / 0
VBA макрос
    #38712035
Piple0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте не переключаться между листами. Сначала активируйте первый лист, сделайте все что надо, при необходимости сохраните в массив. И уже в конце записывайте результат на другой лист.
...
Рейтинг: 0 / 0
VBA макрос
    #38712047
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ssaichРасскажите это простому пользователю который ничего не хочет делатьПростому пользователю надо рассказать, что компьютер - это его рабочий инструмент. И заострить его внимание на том, что "специалиста", не умеющего работать со своим основным рабочим инструментом, принято выгонять и менять на грамотного. Очень мотивирует, надо сказать...
...
Рейтинг: 0 / 0
VBA макрос
    #38712077
ssaich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Piple0Попробуйте не переключаться между листами. Сначала активируйте первый лист, сделайте все что надо, при необходимости сохраните в массив. И уже в конце записывайте результат на другой лист.

Так и сделал, пересчитал все опять кодом, и весь результат записал в другой лист, потом начал брать информацию от туда же, и почему то все встало на свои места, но теперь вопрос в другом, что же такого могло быть необычного в другом листе ? Формулы... ??
...
Рейтинг: 0 / 0
VBA макрос
    #38712079
ssaich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinassaichРасскажите это простому пользователю который ничего не хочет делатьПростому пользователю надо рассказать, что компьютер - это его рабочий инструмент. И заострить его внимание на том, что "специалиста", не умеющего работать со своим основным рабочим инструментом, принято выгонять и менять на грамотного. Очень мотивирует, надо сказать...

Шли бы в лес ! ) Смею предположить что вы "резкий как понос",юноша ?
...
Рейтинг: 0 / 0
VBA макрос
    #38712088
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Юноши, прошу умерить свой пыл во избежание. Акина, считаю, ты излишне резок, ТС вызвигает вполне справедливые требования
...
Рейтинг: 0 / 0
VBA макрос
    #38712147
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
перепишите процедуру копирования с листа на лист. вставляйте только результаты. range(лист1).value=range(лист2).value. ну или специальная вставка - значения (в макрорекордере запишите).
...
Рейтинг: 0 / 0
VBA макрос
    #38712212
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ssaich , извольте не хамить. Да и по возрасту я постарше буду, не Вам меня юношем называть. А то, что Вас ткнули носом в недостаточное знание Вами Вашего же рабочего инструмента, то это должно быть поводом не к возмущениям, а к более интенсивному самообразованию.

Кстати, проблему Вы так и не решили, и её причины так и не нашли, так что, вероятно, она вылезет ещё раз - на этом ли файле или на другом, не так важно.
...
Рейтинг: 0 / 0
VBA макрос
    #38712230
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не вижу, где задается значение для Str1. Если это происходит разово - то зачем постоянно проверять в цикле на его неравенство "0"?
И почему проверка происходит на Лист 2 , а суммирование на Лист ?
...
Рейтинг: 0 / 0
VBA макрос
    #38712236
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл, этот блок:
Код: vbnet
1.
2.
3.
4.
5.
6.
Columns("A:O").Select
    Range("A2").Activate
    Selection.Copy
    Sheets("Лист2").Select
    Columns("A:O").Select
    ActiveSheet.Paste


можно заменить одной всего строкой:
Код: vbnet
1.
Columns("A:O").Copy Sheets("Лист2")Range("A1")


И т.к. далее Вы все равно постоянно указываете полный путь до листа, то активировать Лист2 нужды нет. И можно применить With:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
With Sheets("Лист2")
    Do While .Cells(ii, 1).Value <> ""
        If Str1 = .Cells(ii, 3).Value And Str1 <> "0" Then
            Summa = Summa + Sheets("Лист").Cells(ii, 10).Value
            .Cells(ii, 3).Value = "0"
        End If
        ii = ii + 1
    Loop
End Wtih
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA макрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]