Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2011, 09:08   #11
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

По-моему так(Винни Пух):-).
Можно сократить, вынеся Date + (Day(Date) = 1) в отдельную переменную. С этим сами справитесь.
Вложения
Тип файла: rar УчетАвто2.rar (27.7 Кб, 8 просмотров)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 09.01.2011, 10:37   #12
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Можно сократить, вынеся Date + (Day(Date) = 1) в отдельную переменную. С этим сами справитесь.
А, что это дает? Меньше запись?
А так все СУПЕР, СПАСИБО!!
kuklp
Поясни, это выражение
Код:
If Sheets(Month(Date + (Day(Date) = 1))).Cells(3, (Day(Date + _
        (Day(Date) = 1)) - vv) * 2) = "" Then

Последний раз редактировалось valerij; 09.01.2011 в 10:44.
valerij вне форума Ответить с цитированием
Старый 09.01.2011, 10:55   #13
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Мы уже на ты? Согласен.
Выражение Day(Date) = 1 выдает результат True или False.
В ВБ True = -1, False = 0. То есть, если сегодня первое число, то отнимается 1 от текущих месяца и дня. Для 1 февраля это будет 31 января. Если число не первое, то прибавляется 0 к месяцу и дню. В результате остается текущий день. Маленькие хитрости:-)
Да, на первый вопрос - и меньше запись и если вынести переменную за цикл с Goto(очень не люблю этот оператор) - меньше расчетов, а значит и быстрее.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 09.01.2011 в 11:03.
kuklp вне форума Ответить с цитированием
Старый 09.01.2011, 11:10   #14
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Мы уже на ты? Согласен..Маленькие хитрости
Я рад, извини если...
башка еще трещит...
Все понял, супер, хитрости!!!
valerij вне форума Ответить с цитированием
Старый 09.01.2011, 11:18   #15
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Цитата:
Сообщение от valerij Посмотреть сообщение
башка еще трещит...
Нормально. Мож пивка?
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 10.01.2011, 07:23   #16
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Да, на первый вопрос - и меньше запись и если вынести переменную за цикл с Goto(очень не люблю этот оператор) - меньше расчетов, а значит и быстрее.
ОК! Попробую.
А я Goto обожаю, для меня, упрощает на много, алгоритм.
Еще нравится, всегда удивляло, почему в ВБА не применяют, оператор RETURN (вернуться в точку вызова), чета где -то сделал и вернулся на зад...
valerij вне форума Ответить с цитированием
Старый 10.01.2011, 07:37   #17
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Цитата:
Сообщение от valerij Посмотреть сообщение
ОК! Попробую.
А я Goto обожаю, для меня, упрощает на много, алгоритм.
Еще нравится, всегда удивляло, почему в ВБА не применяют, оператор RETURN (вернуться в точку вызова), чета где -то сделал и вернулся на зад...
Как раз лучше применять конструкцию GoSub - Return. Или цикл Do - Loop.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 10.01.2011, 08:00   #18
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
GoSub - Return..
То же, нигде не встречал
valerij вне форума Ответить с цитированием
Старый 10.01.2011, 08:07   #19
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Потому, что и без нее прекрасно обходятся. Я бы твой цикл записал так:
Код:
    dm = Date + (Day(Date) = 1)
    Do While Sheets(Month(dm)).Cells(3, (Day(dm) - vv) * 2) = ""
            vv = vv + 1
    Loop
    Sheets(Month(dm)).Range(Sheets(Month(dm)).Cells(3, (Day(dm) - vv) * 2 - 1), Sheets(Month(dm)).Cells(35, (Day(dm) - vv) * 2)).Copy _
            Sheets(Month(Date)).Cells(3, Day(Date) * 2 - 1)
Попробуй.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 10.01.2011, 14:00   #20
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Попробуй.
Обязательно, вот нет, такого, что бы мерить время, так, как у меня сейчас есть и так, как ты, предложил.
Визуально у меня, короче, я не в коем, не спорю о правильности твоего способа, уверен, я им и воспользуюсь, просто хотелось бы "пощупать".
Ск. тут на форуме предлагались замеры, у меня не получалось, вернее один и тот же макрос, а замеры всегда разные.
valerij вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копировать данные при чтении Doctordradd Общие вопросы Delphi 0 02.11.2010 18:43
В ячейке проставить название предыдущего месяца kzld Microsoft Office Excel 6 08.10.2010 11:30
копировать данные из файлов с изменяющимся именем Татьяна_45 Microsoft Office Excel 7 24.06.2010 17:26
Копировать данные из предыдущей строки Viktor_Kotov Помощь студентам 4 14.04.2010 18:00
Копировать данные из Excell в Word Dimon_isu Microsoft Office Excel 3 15.05.2008 12:12