Есть три листа с одинаковыми таблицами. Подскажите пожалуйста, можно ли ,залив красным цветом опр. диапазон ячеек в первом листе, распространить автоматически эту заливку на все имеющиеся листы в те же диапазоны. Кидаю файл, если нужен.
Есть три листа с одинаковыми таблицами. Подскажите пожалуйста, можно ли ,залив красным цветом опр. диапазон ячеек в первом листе, распространить автоматически эту заливку на все имеющиеся листы в те же диапазоны. Кидаю файл, если нужен.vdekameron
Pelena, Дело в том, что мне нужно распространять на остальные листы только эту заливку, потому что данные в ячейках на листах будут разные. А если я сделаю как вы посоветовали, то абсолютно все будет так, как на первом.
Pelena, Дело в том, что мне нужно распространять на остальные листы только эту заливку, потому что данные в ячейках на листах будут разные. А если я сделаю как вы посоветовали, то абсолютно все будет так, как на первом.vdekameron
если я сделаю как вы посоветовали, то абсолютно все будет так, как на первом.
С чего бы это вдруг? Если Вы, сгруппировав листы, меняете ТОЛЬКО оформление ячеек, то на листах только оформление и изменится. А данные не изменятся. Вы хоть попробовали?
если я сделаю как вы посоветовали, то абсолютно все будет так, как на первом.
С чего бы это вдруг? Если Вы, сгруппировав листы, меняете ТОЛЬКО оформление ячеек, то на листах только оформление и изменится. А данные не изменятся. Вы хоть попробовали?Alex_ST
я сделаю как вы посоветовали, то абсолютно все будет так,
Почему вы так решили? Если вы выделите список листов перед заливкой, а после заливки - сбросите выделение - то на всех листах повторится тольо заливка. Или тогда подойдем с другого конца - вы вообще эту заливку как делаете? Руками? УФ? Кодом VBA? Заливка должна быть именно определенных (одинаковых) диапазонов? Или всё же по каким-то условиям, зависящим от содержимого ячеек?
я сделаю как вы посоветовали, то абсолютно все будет так,
Почему вы так решили? Если вы выделите список листов перед заливкой, а после заливки - сбросите выделение - то на всех листах повторится тольо заливка. Или тогда подойдем с другого конца - вы вообще эту заливку как делаете? Руками? УФ? Кодом VBA? Заливка должна быть именно определенных (одинаковых) диапазонов? Или всё же по каким-то условиям, зависящим от содержимого ячеек?AndreTM
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Not Intersect([B5:B30], Target) Is Nothing And GetAsyncKeyState(18) Then Sheets(Array("Лист1", "Лист2", "Лист3")).Select Else ActiveSheet.Select End If End Sub
[/vba] при выборе любой ячейки или диапазона из B5:B30 с зажатым alt вносимые изменения будут отображаться на всех 3-х листах
[vba]
Код
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Not Intersect([B5:B30], Target) Is Nothing And GetAsyncKeyState(18) Then Sheets(Array("Лист1", "Лист2", "Лист3")).Select Else ActiveSheet.Select End If End Sub
[/vba] при выборе любой ячейки или диапазона из B5:B30 с зажатым alt вносимые изменения будут отображаться на всех 3-х листахkrosav4ig
Alex_ST, попробовал как вы сказали, все получилось. Но мне нужен именно макрос. Т.е. залил одну ячейку красным и макросом распространить на остальные листы. Или я многого хочу?
Alex_ST, попробовал как вы сказали, все получилось. Но мне нужен именно макрос. Т.е. залил одну ячейку красным и макросом распространить на остальные листы. Или я многого хочу? vdekameron
AndreTM, Заливка не будет зависеть от содержимого ячеек. В первом листе из таблицы произвольно выбирается диапазон ячеек и заливается цветом. И потом нужно макросом распределить эту же заливку в этих же диапазонах ячеек на всех листах.
AndreTM, Заливка не будет зависеть от содержимого ячеек. В первом листе из таблицы произвольно выбирается диапазон ячеек и заливается цветом. И потом нужно макросом распределить эту же заливку в этих же диапазонах ячеек на всех листах.vdekameron
krosav4ig, Спасибо, получается, но если Название будет не Лист1 а например Пупкин, то уже не будет работать получается. Или если листов будет уже не 3 а 20 и названия будут разные.
krosav4ig, Спасибо, получается, но если Название будет не Лист1 а например Пупкин, то уже не будет работать получается. Или если листов будет уже не 3 а 20 и названия будут разные.vdekameron
если нужно работать с листами к примеру с листами с 3 по 10 то код будет такой [vba]
Код
Private Sub Workbook_SheetSelectionChange1(ByVal sh As Object, ByVal Target As Range) With Application: .ScreenUpdating = 0: .EnableEvents = 0: End With Dim f&, l&, arr() f = 3: l = 10 If sh.Index <= l And sh.Index >= f Then If Not Intersect([B5:B30], Target) Is Nothing And GetAsyncKeyState(18) Then arr = Application.Transpose(Evaluate("=row(" & f & ":" & l & ")")) Sheets(arr).Select: sh.Activate: Target.Select Else sh.Select End If End If With Application: .ScreenUpdating = 1: .EnableEvents = 1: End With End Sub
[/vba] если со всеми листами то нужен 1 лишний лист в конце книги и код такой [vba]
Код
Private Sub Workbook_SheetSelectionChange(ByVal sh As Object, ByVal Target As Range) With Application: .ScreenUpdating = 0: .EnableEvents = 0: End With Dim arr() If Not Intersect([B5:B30], Target) Is Nothing And GetAsyncKeyState(18) Then arr = Application.Transpose(Evaluate("=row(1:" & Sheets.Count - 1 & ")")) Sheets(arr).Select: sh.Activate: Target.Select Else sh.Select End If With Application: .ScreenUpdating = 1: .EnableEvents = 1: End With End Sub
[/vba]
если нужно работать с листами к примеру с листами с 3 по 10 то код будет такой [vba]
Код
Private Sub Workbook_SheetSelectionChange1(ByVal sh As Object, ByVal Target As Range) With Application: .ScreenUpdating = 0: .EnableEvents = 0: End With Dim f&, l&, arr() f = 3: l = 10 If sh.Index <= l And sh.Index >= f Then If Not Intersect([B5:B30], Target) Is Nothing And GetAsyncKeyState(18) Then arr = Application.Transpose(Evaluate("=row(" & f & ":" & l & ")")) Sheets(arr).Select: sh.Activate: Target.Select Else sh.Select End If End If With Application: .ScreenUpdating = 1: .EnableEvents = 1: End With End Sub
[/vba] если со всеми листами то нужен 1 лишний лист в конце книги и код такой [vba]
Код
Private Sub Workbook_SheetSelectionChange(ByVal sh As Object, ByVal Target As Range) With Application: .ScreenUpdating = 0: .EnableEvents = 0: End With Dim arr() If Not Intersect([B5:B30], Target) Is Nothing And GetAsyncKeyState(18) Then arr = Application.Transpose(Evaluate("=row(1:" & Sheets.Count - 1 & ")")) Sheets(arr).Select: sh.Activate: Target.Select Else sh.Select End If With Application: .ScreenUpdating = 1: .EnableEvents = 1: End With End Sub
krosav4ig, Вот пример. Будет примерно 30 листов и каждый со своим названием. Это реально чтобы все работало при изменении имен листов? Или код привязан жестко к именам? Прикрепляю пример файла
krosav4ig, Вот пример. Будет примерно 30 листов и каждый со своим названием. Это реально чтобы все работало при изменении имен листов? Или код привязан жестко к именам? Прикрепляю пример файлаvdekameron
krosav4ig, Здорово, все работает. Я видел вы записали код в книгу. Извените за наглость, а можно этот код как то записать в кнопке, чтобы работало так- залил диапазон ячеек цветом, нажал на кнопку и произошло то,что делает ваш код. Я задаю этот вопрос не потому, что мне лень нажать alt и затем сделать это, а потому что из этих 30 человек далеко не все запомнят эти действия, особенно учитывая возраст некоторых.
krosav4ig, Здорово, все работает. Я видел вы записали код в книгу. Извените за наглость, а можно этот код как то записать в кнопке, чтобы работало так- залил диапазон ячеек цветом, нажал на кнопку и произошло то,что делает ваш код. Я задаю этот вопрос не потому, что мне лень нажать alt и затем сделать это, а потому что из этих 30 человек далеко не все запомнят эти действия, особенно учитывая возраст некоторых.vdekameron