Здравствуйте! Помогите разобраться с одной задачей. После того как в ячейке B1 будет написано число "2", скопируются ячейки A4, А5, А6 и вставятся на второй лист, и при этом лист должен будет появится, изначально второго листа нет, он должен будет появится когда в ячейке B1 будет написано число "2", а так же этот новый лист будет называться "Ящик 2". После того как скопируются ячейки на втором листе должен будет появится текст в ячейке B3, текст: "Ящик №2".
Здравствуйте! Помогите разобраться с одной задачей. После того как в ячейке B1 будет написано число "2", скопируются ячейки A4, А5, А6 и вставятся на второй лист, и при этом лист должен будет появится, изначально второго листа нет, он должен будет появится когда в ячейке B1 будет написано число "2", а так же этот новый лист будет называться "Ящик 2". После того как скопируются ячейки на втором листе должен будет появится текст в ячейке B3, текст: "Ящик №2".Dmitry1992_92
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) = "B1" Then On Error Resume Next aaa = Sheets("Ящик " & Target).Range("A1") If Err = 0 Then Exit Sub On Error GoTo 0 Dim sh As Worksheet Application.ScreenUpdating = 0 Me.Copy After:=Sheets(ThisWorkbook.Sheets.Count) Set sh = ActiveSheet With sh .Range("A1:B2").Clear .Range("A3") = "Ящик №" & Target .Name = "Ящик " & Target End With Me.Select 'если переход обратно на текущий лист не нужен, то уберите эту строку Application.ScreenUpdating = 1 End If End Sub
[/vba]
В модуль листа вот такой код можно [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) = "B1" Then On Error Resume Next aaa = Sheets("Ящик " & Target).Range("A1") If Err = 0 Then Exit Sub On Error GoTo 0 Dim sh As Worksheet Application.ScreenUpdating = 0 Me.Copy After:=Sheets(ThisWorkbook.Sheets.Count) Set sh = ActiveSheet With sh .Range("A1:B2").Clear .Range("A3") = "Ящик №" & Target .Name = "Ящик " & Target End With Me.Select 'если переход обратно на текущий лист не нужен, то уберите эту строку Application.ScreenUpdating = 1 End If End Sub
А можно ещё сделать так если у меня было 3 страницы, а я решил поставить цифру 2 и после этого страница Ящик №3 удаляется, можно ли так сделать?
А можно ещё сделать так если у меня было 3 страницы, а я решил поставить цифру 2 и после этого страница Ящик №3 удаляется, можно ли так сделать?Dmitry1992_92
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) = "B1" Then Err.Clear Do While Err.Number = 0 On Error Resume Next Application.DisplayAlerts = False Worksheets(Target.Value + 1).Delete Loop On Error Resume Next aaa = Sheets("ящик " & Target).Range("A1") jhj = Err If Err = 0 Then Exit Sub On Error GoTo 0 Dim sh As Worksheet Application.ScreenUpdating = 0 Me.Copy After:=Sheets(ThisWorkbook.Sheets.Count) Set sh = ActiveSheet With sh .Range("A1:B2").Clear .Range("A3") = "ящик є" & Target .Name = "ящик " & Target End With Me.Select 'если переход обратно на текущий лист не нужен, то уберите эту строку Application.ScreenUpdating = 1 End If End Sub
[/vba]
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) = "B1" Then Err.Clear Do While Err.Number = 0 On Error Resume Next Application.DisplayAlerts = False Worksheets(Target.Value + 1).Delete Loop On Error Resume Next aaa = Sheets("ящик " & Target).Range("A1") jhj = Err If Err = 0 Then Exit Sub On Error GoTo 0 Dim sh As Worksheet Application.ScreenUpdating = 0 Me.Copy After:=Sheets(ThisWorkbook.Sheets.Count) Set sh = ActiveSheet With sh .Range("A1:B2").Clear .Range("A3") = "ящик є" & Target .Name = "ящик " & Target End With Me.Select 'если переход обратно на текущий лист не нужен, то уберите эту строку Application.ScreenUpdating = 1 End If End Sub