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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2009, 23:47   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию Можно упростить этот макрос?

Подскажите, неделю "ломаю голову", можно упростить этот макрос или упрощение займет стока же кода, левая сторона не вызывает проблем там шаг 21, а вот правая!??
Код:
Sub zxc()
ttL = 0
For листы = 5 To 9
With Sheets(листы)
            .[h15] = Sheets(1).[e33].Offset(ttL)
            .[h36] = Sheets(1).[e34].Offset(ttL)
            .[h57] = Sheets(1).[e61].Offset(ttL)
            .[h78] = Sheets(1).[e62].Offset(ttL)
            .[h99] = Sheets(1).[e63].Offset(ttL)
            .[h120] = Sheets(1).[e89].Offset(ttL)
            .[h141] = Sheets(1).[e90].Offset(ttL)
            .[h162] = Sheets(1).[e117].Offset(ttL)
            .[h183] = Sheets(1).[e118].Offset(ttL)
            .[h204] = Sheets(1).[e145].Offset(ttL)
            .[h225] = Sheets(1).[e146].Offset(ttL)
            .[h246] = Sheets(1).[e147].Offset(ttL)
            .[h267] = Sheets(1).[e173].Offset(ttL)
            .[h288] = Sheets(1).[e174].Offset(ttL)
            .[h309] = Sheets(1).[e201].Offset(ttL)
            .[h330] = Sheets(1).[e202].Offset(ttL)
            .[h351] = Sheets(1).[e229].Offset(ttL)
            .[h372] = Sheets(1).[e230].Offset(ttL)
            .[h393] = Sheets(1).[e231].Offset(ttL)
            .[h414] = Sheets(1).[e257].Offset(ttL)
            .[h435] = Sheets(1).[e258].Offset(ttL)
            .[h456] = Sheets(1).[e285].Offset(ttL)
            .[h477] = Sheets(1).[e286].Offset(ttL)
            .[h498] = Sheets(1).[e313].Offset(ttL)
            .[h519] = Sheets(1).[e314].Offset(ttL)
            .[h540] = Sheets(1).[e315].Offset(ttL)
            .[h561] = Sheets(1).[e341].Offset(ttL)
            .[h582] = Sheets(1).[e342].Offset(ttL)
            .[h603] = Sheets(1).[e369].Offset(ttL)
            .[h624] = Sheets(1).[e370].Offset(ttL)
ttL = ttL + 3
End With
Next
valerij вне форума Ответить с цитированием
Старый 07.07.2009, 00:06   #2
pivas
Форумчанин
 
Регистрация: 03.04.2009
Сообщений: 412
По умолчанию

Доброго времени суток, valerij. Если это весь код и он не собирается увеличиваться, то нет смысла городить огород.
pivas вне форума Ответить с цитированием
Старый 07.07.2009, 00:14   #3
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от pivas Посмотреть сообщение
Если это весь код и он не собирается увеличиваться, то нет смысла городить огород.
Да, это весь код.
Спасибо, теперь успокоился.
valerij вне форума Ответить с цитированием
Старый 07.07.2009, 11:24   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

так пробуй, не особо короче, но все же...
Код:
  ttL = 0
  For листы = 5 To 9
    With Sheets(листы)
      d0 = 0
      For d1 = 33 To 369 Step 84
        For d2 = 0 To 2
          For d3 = 0 To IIf(d2 = 1, 2, 1)
            If d0 < 30 Then
              .Cells(d0 * 21 + 15, 8) = Sheets(1).Cells(d1 + d2 * 28 + d3, 5).Offset(ttL)
              d0 = d0 + 1
            End If
  Next: Next: Next: End With: Next
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 07.07.2009, 12:36   #5
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
так пробуй, не особо короче, но все же...
Игорь, попробовал, но не разбирался(есть пол часа), пока не правильно делает, он во все листы с 5 - 9, выдает одно и то же число, допустим я ввел в е89 = 1000 - Лист1, а макрос во все листы(5-9) в h120, вставил эту 1000, а надо, тока в лист5-h120 = 1000

Последний раз редактировалось valerij; 07.07.2009 в 15:17.
valerij вне форума Ответить с цитированием
Старый 07.07.2009, 12:46   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

во-первых, не в в h20, а в h120, а во-вторых, цикл по листах не я придумал, а взял с твоего макроса:
Цитата:
Sub zxc()
ttL = 0
For листы = 5 To 9
With Sheets(листы)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 07.07.2009, 15:28   #7
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
во-первых, не в в h20, а в h120, а во-вторых, цикл по листах не я придумал, а взял с твоего макроса:
Исправил опечатку, спешил.
Игорь, мой макрос все правильно делает, давай рассмотрим, все те же параметры.
Ввел: е89 = 1000 - Лист1 и только в листе 5 -h120 отобразится это число, ведь ttL = 0, в 6 листе -h120 = 0, поскольку ttL = 3 и Offset(ttL) сдвинет ячейку е89 + 3 = 92, а там ноль.....


Игорь все работает, ты забыл про ttL = ttL + 3, я вставил и все ОК!

Последний раз редактировалось valerij; 07.07.2009 в 15:42.
valerij вне форума Ответить с цитированием
Старый 07.07.2009, 19:14   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
все работает
вот и славно...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.07.2009, 22:41   #9
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Подскажите, а как ЭТО мона упростить
Код:
='F:\Док_Офис\Заявки 09\2009\Июнь\[На 01.06.09.xls]№ 2'!$H$5+'
F:\Док_Офис\Заявки 09\2009\Июнь\[На 02.06.09.xls]№ 2'!$H$5+
'F:\Док_Офис\Заявки 09\2009\Июнь\[На 03.06.09.xls]№ 2'!$H$5+.......
+'F:\Док_Офис\Заявки 09\2009\Июнь\[На 30.06.09.xls]№ 2'!$H$5
valerij вне форума Ответить с цитированием
Старый 16.07.2009, 22:47   #10
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А что ЭТО такое?
Часть формулы, или кусок макроса?
EducatedFool вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите упростить простой макрос frantic150 Microsoft Office Excel 2 23.06.2009 04:55
проверьте плз код!можно ли его оптимизировать или упростить? -ushёl- Помощь студентам 10 23.04.2009 21:07
Вот! Тот макрос, который заставил обратится меня на этот форум! Дмитрий Фукс Microsoft Office Excel 6 10.04.2009 10:29
Запереть макрос можно? zander Microsoft Office Excel 1 15.02.2009 15:40