Добрый день! Пожалуйста помогите решить мини задачу, есть две одинаковые таблицы, одна заполнена данными, вторя нет, вот нужно чтобы значения из одной таблицы копировались в другую, а какие данные нужно скопировать это определяет выставленный флажок из элементов управления, наглядно задачу в файле указала, код там есть, он он не верный.
Добрый день! Пожалуйста помогите решить мини задачу, есть две одинаковые таблицы, одна заполнена данными, вторя нет, вот нужно чтобы значения из одной таблицы копировались в другую, а какие данные нужно скопировать это определяет выставленный флажок из элементов управления, наглядно задачу в файле указала, код там есть, он он не верный.Заяц6628
Sub ФлажокX_тык() Dim SH As Shape Range("J2:L4").Value = Range("B2:D4").Value For Each SH In ActiveSheet.Shapes If SH.Type = msoFormControl Then If SH.TopLeftCell.Column = 1 Then If SH.DrawingObject.Value <> 1 Then Range("J1:L1").Offset(SH.TopLeftCell.Row - 10).ClearContents End If ElseIf SH.TopLeftCell.Column = 4 Then If SH.DrawingObject.Value <> 1 Then Range("I2:I4").Offset(, SH.TopLeftCell.Row - 10).ClearContents End If End If End If Next SH End Sub
[/vba]
На каждый флажок назначьте этот макрос. [vba]
Код
Sub ФлажокX_тык() Dim SH As Shape Range("J2:L4").Value = Range("B2:D4").Value For Each SH In ActiveSheet.Shapes If SH.Type = msoFormControl Then If SH.TopLeftCell.Column = 1 Then If SH.DrawingObject.Value <> 1 Then Range("J1:L1").Offset(SH.TopLeftCell.Row - 10).ClearContents End If ElseIf SH.TopLeftCell.Column = 4 Then If SH.DrawingObject.Value <> 1 Then Range("I2:I4").Offset(, SH.TopLeftCell.Row - 10).ClearContents End If End If End If Next SH End Sub
Sub Заяц6628() Dim VR As Range, HR As Range, Vi&, Hi& For Each VR In Range("a12:a14") If VR Then Vi = VR.Row - 10 For Each HR In Range("d12:d14") If HR Then Hi = HR.Row - 10 If Vi <> 0 Then Cells(Vi, Hi).Offset(0, 8) = Cells(Vi, Hi) End If Next HR Next VR End Sub
[/vba]
Ещё вариант (одним макросом): [vba]
Код
Sub Заяц6628() Dim VR As Range, HR As Range, Vi&, Hi& For Each VR In Range("a12:a14") If VR Then Vi = VR.Row - 10 For Each HR In Range("d12:d14") If HR Then Hi = HR.Row - 10 If Vi <> 0 Then Cells(Vi, Hi).Offset(0, 8) = Cells(Vi, Hi) End If Next HR Next VR End Sub