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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2011, 09:56   #1
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию Копирование ячеек на листы

Здравствуйте Ув. форумчане.
У меня есть очень маленькая проблема в составлении макроса, который будет копировать ячейки с листа1 на все остальные листы.
на листе 1 нужно скопировать ячейки B3:E20 и вставить на ВСЕ остальные листы (предварительно сняв защиту листа, после копирования назад поставив защиту листа) в ячейки I3:K20.
Буду благодарен за помощь.
Заранее большое спасибо
Вот примерчик
Вложения
Тип файла: rar CopyCells.rar (6.9 Кб, 13 просмотров)
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 23.06.2011, 13:24   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Sub copyB3_E20()
  For Each sh In Sheets
    If sh.Name <> ActiveSheet.Name Then
      sh.Unprotect
      Range("B3:E20").Copy Destination:=sh.Range("I3")
      sh.Protect
    End If
  Next
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 23.06.2011, 13:58   #3
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Код:
Sub copyB3_E20()
  For Each sh In Sheets
    If sh.Name <> ActiveSheet.Name Then
      sh.Unprotect
      Range("B3:E20").Copy Destination:=sh.Range("I3")
      sh.Protect
    End If
  Next
End Sub
Спасибо большое IgorGO, за-то, что откликнулись, вот сейчас тоже собирал кодик один, посмотрите пожалуйста, нормальный?:


Код:
Sub copy()

Const MyPassword = "111" 
Dim i%
For i = 1 To ThisWorkbook.Sheets.Count
Sheets(1).Range("O3:P24").Copy
  With Sheets(i).Range("DM9:DN30")


    .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
         'Sheets(i).Columns("DM:DN").ColumnWidth = 15
   Range("A1").Select
     With Sheets(i)
        .Protect Password:=MyPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
            AllowFiltering:=True, UserInterfaceOnly:=True
            .EnableOutlining = True
           
     End With
  End With
Application.CutCopyMode = False
Next
Sheets(1).Range("A1").Select
End Sub
только маленький нюанс, (выделено красным), при переходе на любой из листов, в которые проводилось копирование, не могу доделать чтобы открывался лист на на определенной ячейки. Не подскажите как этот нюанс доделать? И подскажите какой лучше взять код, Ваш или то что я насобирал )))
Единственный способ стать умнее, играть с более умным противником...

Последний раз редактировалось staniiislav; 23.06.2011 в 14:01.
staniiislav вне форума Ответить с цитированием
Старый 23.06.2011, 14:00   #4
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Код:
Sub Copy()

Const MyPassword = "111" 
Dim i%
For i = 1 To ThisWorkbook.Sheets.Count
Sheets(1).Range("O3:P24").Copy
  With Sheets(i).Range("DM9:DN30")


    .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
         'Sheets(i).Columns("DM:DN").ColumnWidth = 15
   Range("A1").Select
     With Sheets(i)
        .Protect Password:=MyPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
            AllowFiltering:=True, UserInterfaceOnly:=True
            .EnableOutlining = True
           
     End With
  End With
Application.CutCopyMode = False
Next
Sheets(1).Range("A1").Select
End Sub
Единственный способ стать умнее, играть с более умным противником...

Последний раз редактировалось staniiislav; 23.06.2011 в 14:03.
staniiislav вне форума Ответить с цитированием
Старый 23.06.2011, 14:01   #5
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
For Each sh In Sheets
[/CODE]
Игорь, я бы написал:
Код:
For Each sh In thisworkbook.workSheets
Мало ли, листы диаграмм, форм, другая книга открыта и т.д. Ничего, что я по англицки?
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 23.06.2011, 14:12   #6
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Цитата:
Сообщение от staniiislav Посмотреть сообщение
Код:
Sub Copy()

Const MyPassword = "111" 
Dim i%
For i = 1 To ThisWorkbook.Sheets.Count
Sheets(1).Range("O3:P24").Copy
  ...
End Sub
Лучше:
Код:
Sub MyCopy()
Const MyPassword = "111"
Dim i%
For i = 1 To ThisWorkbook.Worksheets.Count
 If Sheets(i).Name <> ActiveSheet.Name Then
Sheets(i).Range("DM9:DN30").Value = Sheets(1).Range("O3:P24").Value
     With Sheets(i)
        .Protect Password:=MyPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
            AllowFiltering:=True, UserInterfaceOnly:=True
            .EnableOutlining = True
     End With
  End If
Next
End Sub
И еще - не хотите проблем, не называйте макросы зарезервированными словами Экса(ВБА).
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 23.06.2011, 14:23   #7
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Лучше:
Код:
Sub MyCopy()
Const MyPassword = "111"
Dim i%
For i = 1 To ThisWorkbook.Worksheets.Count
 If Sheets(i).Name <> ActiveSheet.Name Then
Sheets(i).Range("DM9:DN30").Value = Sheets(1).Range("O3:P24").Value
     With Sheets(i)
        .Protect Password:=MyPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
            AllowFiltering:=True, UserInterfaceOnly:=True
            .EnableOutlining = True
     End With
  End If
Next
End Sub
И еще - не хотите проблем, не называйте макросы зарезервированными словами Экса(ВБА).
большое спасибо с утра сижу мучаюсь! и за имена спасибо! буду знать.
Тему можно закрывать, вопросов больше нет.
отдельное спасибо kuklp и IgorGO
выручили!
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
копирование заполненных ячеек maratmm Microsoft Office Excel 0 12.11.2010 16:49
Поиск и копирование ячеек ruvid Microsoft Office Excel 5 29.07.2010 20:13
Копирование ячеек.. Алексей11111 Microsoft Office Excel 1 20.02.2010 14:03
Копирование видимых ячеек mephist Microsoft Office Excel 4 18.05.2009 11:18