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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2013, 23:04   #1
and150382
Форумчанин
 
Регистрация: 19.10.2012
Сообщений: 217
По умолчанию Упростить код

Как можно упростить данный код

Код:
Private Sub CommandButton6_Click()
Sheets("Перекуры").Select
    ActiveWindow.SmallScroll Down:=-15
    Sheets("Перекуры").Select
    Sheets("Перекуры").Unprotect "6161" ' временно снимаем защиту
   ' ActiveSheet.Unprotect
    
    ActiveWindow.SmallScroll Down:=-9
    Range("B3:B42").Select
    Selection.ClearContents
    Range("D3:D42").Select
    Selection.ClearContents
    Range("F3:F42").Select
    Selection.ClearContents
    Range("H3:H42").Select
    Selection.ClearContents
    Range("J3:J42").Select
    Selection.ClearContents
    Range("L3:L42").Select
    Selection.ClearContents
    Range("N3:N42").Select
    Selection.ClearContents
    Range("P3:P42").Select
    Selection.ClearContents
    ActiveWindow.ScrollColumn = 2
    Range("R3:R42").Select
    Selection.ClearContents
    ActiveWindow.ScrollColumn = 1
    Range("B3").Select
    Sheets("Перекуры").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFiltering:=True
        Sheets("Перекуры").Protect "6161" ' ставим защиту обратно
        
    Sheets("База").Select
    ActiveWindow.SmallScroll Down:=-12
    Sheets("База").Select
    Sheets("База").Unprotect "6161" ' временно снимаем защиту
    'ActiveSheet.Unprotect
    Range("B10:Q140").Select
    Selection.ClearContents
    ActiveWindow.ScrollColumn = 7
    ActiveWindow.ScrollColumn = 6
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Selection.ClearContents
    'убираем заливку
    Range("C10:C140").Select
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    
    ActiveWindow.SmallScroll Down:=-147
    Range("C10").Select
    Sheets("База").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFiltering:=True
      Sheets("База").Protect "6161" ' ставим защиту обратно
        
   'сохранить как....
  Range("P1").Select
  ActiveWorkbook.SaveAs Filename:= _
      "C:\Documents and Settings\Admin\Рабочий стол\ " & Left(Now, 10) & ".xlsm", _
      FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

Последний раз редактировалось EducatedFool; 14.02.2013 в 23:21. Причина: ПОЛЬЗУЙТЕСЬ ТЕГОМ ДЛЯ КОДА! не первый ведь день на форуме...
and150382 вне форума Ответить с цитированием
Старый 14.02.2013, 23:20   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Примерно так:

Код:
Private Sub CommandButton6_Click()
    
    With Sheets("Перекуры")
        .Unprotect "6161"    ' временно снимаем защиту

        .Range("B3:B42").ClearContents
        .Range("D3:D42").ClearContents
        .Range("F3:F42").ClearContents
        .Range("H3:H42").ClearContents
        .Range("J3:J42").ClearContents
        .Range("L3:L42").ClearContents
        .Range("N3:N42").ClearContents
        .Range("P3:P42").ClearContents
        .Range("R3:R42").ClearContents

        .Protect "6161"    ' ставим защиту обратно
    End With

    With Sheets("База")
        .Unprotect "6161"    ' временно снимаем защиту

        .Range("B10:Q140").ClearContents
        .Range("C10:C140").Interior.ColorIndex = 0    'убираем заливку

        .Protect "6161"    ' ставим защиту обратно
    End With

    Filename$ = "C:\Documents and Settings\Admin\Рабочий стол\ " & Format(Now, "DD.MM.YYYY HH-NN-SS") & ".xlsm"
    
    ActiveWorkbook.SaveAs Filename$, xlOpenXMLWorkbookMacroEnabled

End Sub
EducatedFool вне форума Ответить с цитированием
Старый 14.02.2013, 23:28   #3
and150382
Форумчанин
 
Регистрация: 19.10.2012
Сообщений: 217
По умолчанию

Спасибо EducatedFool , как всегда выручил!!!!
and150382 вне форума Ответить с цитированием
Старый 15.02.2013, 02:52   #4
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

еще так можно

Код:
.Range("B3:B42").ClearContents
.Range("D3:D42").ClearContents
.Range("F3:F42").ClearContents
.Range("H3:H42").ClearContents
.Range("J3:J42").ClearContents
.Range("L3:L42").ClearContents
.Range("N3:N42").ClearContents
.Range("P3:P42").ClearContents
.Range("R3:R42").ClearContents
Код:
.Range("B3:B42,D3:D42,F3:F42,H3:H42,J3:J42,L3:L42,N3:N42,P3:P42,R3:R42").ClearContents
только правильнее циклом
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 15.02.2013, 03:23   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
for c = 2 to 18 step 2
  cells(3,c).resize(40,1).ClearContents
next
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 15.02.2013, 12:51   #6
and150382
Форумчанин
 
Регистрация: 19.10.2012
Сообщений: 217
По умолчанию

Спасибо всем! А скажите, если файл с таким именем при сохранении уже существует, то появляется сообщение типа заменить его. При нажимании на любую кнопку выдает ошибку и подсвечивает

Range("P1").Select
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\Admin\Рабочий стол\ " & Left(Now, 10) & ".xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroE nabled, CreateBackup:=False

Как сделать чтобы при нажатии на кнопки всё работало?
and150382 вне форума Ответить с цитированием
Старый 15.02.2013, 14:25   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Как сделать чтобы при нажатии на кнопки всё работало?
а вы не пробуете задавать вопросы Яндексу?

на этот вопрос на форуме отвечали десятки раз...

Код:
    Filename$ = "C:\Documents and Settings\Admin\Рабочий стол\ " & Format(Now, "DD.MM.YYYY HH-NN-SS") & ".xlsm"

    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename$, xlOpenXMLWorkbookMacroEnabled
    Application.DisplayAlerts = True
EducatedFool вне форума Ответить с цитированием
Старый 15.02.2013, 15:35   #8
and150382
Форумчанин
 
Регистрация: 19.10.2012
Сообщений: 217
По умолчанию

В вашем коде ругается на Filename$
and150382 вне форума Ответить с цитированием
Старый 15.02.2013, 15:53   #9
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Код:
Filename$ = "C:\Documents and Settings\Admin\Рабочий стол\_" & Format(Now, "DD.MM.YYYY HH-NN-SS") & ".xlsm"
пробел уберите.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 15.02.2013, 16:01   #10
and150382
Форумчанин
 
Регистрация: 19.10.2012
Сообщений: 217
По умолчанию

вот какую ошибку выдаёт
Изображения
Тип файла: jpg ошибка.jpg (110.7 Кб, 120 просмотров)
and150382 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упростить код Gefo PHP 1 14.02.2013 16:36
Упростить код slus Microsoft Office Excel 1 11.02.2013 21:10
Упростить код. VintProg Общие вопросы C/C++ 2 04.11.2011 01:25
упростить код на С++ forses2901 Помощь студентам 4 26.09.2011 17:20
Упростить код Shouldercannon Общие вопросы Delphi 7 20.10.2010 17:01