Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA макрос / 17 сообщений из 17, страница 1 из 1
04.08.2014, 11:41
    #38711939
ssaich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA макрос
Записанным макросом копирую данные из листа в другой лист и использую его как черновик

Код: 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
04.08.2014, 11:59
    #38711959
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA макрос
ssaich, ii=0 в начале кода?!
...
Рейтинг: 0 / 0
04.08.2014, 12:00
    #38711960
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA макрос
блин, Summa=0, ii=1
...
Рейтинг: 0 / 0
04.08.2014, 12:00
    #38711961
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA макрос
ssaichв отладчике смотрю, что иногда в ячейках появляются не понятные мне значения, которых просто ну не может быть и не откуда им взяться.Нормально так... ты почто в отладчик лезешь, если его использовать не умеешь? сперва поучись, что ли...

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

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

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

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

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

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

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

Кстати, проблему Вы так и не решили, и её причины так и не нашли, так что, вероятно, она вылезет ещё раз - на этом ли файле или на другом, не так важно.
...
Рейтинг: 0 / 0
04.08.2014, 15:24
    #38712230
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA макрос
Не вижу, где задается значение для Str1. Если это происходит разово - то зачем постоянно проверять в цикле на его неравенство "0"?
И почему проверка происходит на Лист 2 , а суммирование на Лист ?
...
Рейтинг: 0 / 0
04.08.2014, 15:27
    #38712236
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA макрос
Забыл, этот блок:
Код: 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
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA макрос / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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