Здравствуйте! В приложенном файле есть таблица G2:I4, требуемые значения которой показываются в ячейке B2 когда изменяется значения в шапке в таблицы. Например, если значение в ячейке G1=1, в ячейке B2 показывается значение ячейки G2, если значение в ячейке H1=2, в ячейке B2 показывается значение ячейки H3 и т.д. Помогите пожалуйста написать макрос чтоб при выделении ячейки B2, в ней можно было править значения которые находятся в таблице. Чтобы получалось так: например, в шапке таблице в ячейке I1 значение =3, G1 и H1=0, ячейка B2 показывает значение ячейки I4, при выделении ячейки B2 и вводе в нее другой цифры, эта цифра должна появляться в ячейке I4. Заранее благодарю!
Здравствуйте! В приложенном файле есть таблица G2:I4, требуемые значения которой показываются в ячейке B2 когда изменяется значения в шапке в таблицы. Например, если значение в ячейке G1=1, в ячейке B2 показывается значение ячейки G2, если значение в ячейке H1=2, в ячейке B2 показывается значение ячейки H3 и т.д. Помогите пожалуйста написать макрос чтоб при выделении ячейки B2, в ней можно было править значения которые находятся в таблице. Чтобы получалось так: например, в шапке таблице в ячейке I1 значение =3, G1 и H1=0, ячейка B2 показывает значение ячейки I4, при выделении ячейки B2 и вводе в нее другой цифры, эта цифра должна появляться в ячейке I4. Заранее благодарю!Mexo
Private Sub Worksheet_Change(ByVal Target As Range) Dim j As Long, d_ As Range, d0_ As Range, n_ If Target.Cells.Count > 1 Then Exit Sub Application.ScreenUpdating = 0 Application.EnableEvents = False Set d0_ = Range("G1:I1") With Target If Not Application.Intersect(d0_, .Cells) Is Nothing Then If .Value > 0 Then n_ = .Value Range("G1:I1") = 0 .Value = n_ Range("B2").Value = .Offset(.Value, 0).Value End If ElseIf .Address(0, 0) = "B2" Then For Each d_ In d0_ If d_ <> 0 Then d_.Offset(d_.Value) = .Value End If Next d_ End If End With Application.EnableEvents = True Application.ScreenUpdating = 1 End Sub
[/vba]
Так нужно? [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim j As Long, d_ As Range, d0_ As Range, n_ If Target.Cells.Count > 1 Then Exit Sub Application.ScreenUpdating = 0 Application.EnableEvents = False Set d0_ = Range("G1:I1") With Target If Not Application.Intersect(d0_, .Cells) Is Nothing Then If .Value > 0 Then n_ = .Value Range("G1:I1") = 0 .Value = n_ Range("B2").Value = .Offset(.Value, 0).Value End If ElseIf .Address(0, 0) = "B2" Then For Each d_ In d0_ If d_ <> 0 Then d_.Offset(d_.Value) = .Value End If Next d_ End If End With Application.EnableEvents = True Application.ScreenUpdating = 1 End Sub