2015-12-15 5 views
0

Я хотел бы создать кнопку, добавить новый лист и извлечь данные из рабочего листа («данные») на новый лист («Отчет»)VBA Excel добавить новый лист и удалил оригинальный

Однако, если я нажму кнопку еще раз, появится ошибка «имя рабочего листа дублируется»

Поэтому я хотел бы добавить функцию в свой исходный код, если существует имя рабочего листа «report» , а затем удалить его еще сгенерировать Отчет.

Но я не уверен, как изменить его в своем исходном коде И я не уверен, что мне нужно новое для каждого цикла

Private Sub CommandButton3_Click() 

Dim rng As Range 
Dim ss As Range, cel As Range 
Dim yesno As Range 
Dim lastrow As Long  
//looking for the last row of  the data 
Dim tws As Worksheet 
Dim tlr, i& 

Set wks = Sheets("Data") 
With wks 
    lastrow = .Range("A3").End(xlDown).Row 

    Set yesno = .Range("AX3:AX" & lastrow) 
Set tws = Worksheets.Add(after:= 
Sheets(Worksheets.Count)) 
tws.Name = ("report") 
//fetch the first row as the title 
Set rng = Union(.Range("B1"), 
    .Range("F1"),           
    .Range("G1"), 
    .Range("H1"), 
    .Range("N1"),.Range(".O1"), .Range("Q1"), 
    .Range("U1"),.Range("W1")) 
    rng.Copy tws.Range("A1") 

//fetec the data with condition 
For Each ss In yesno 
If LCase(ss.Cells.Value) = "Yes" And 
    LCase(ss.Cells.Offset(0, -31).Value) = "trigger"  
    And 
    LCase(ss.Cells.Offset(0, -47).Value) = "trigger"   
    Then 
    Set rng = Union(.Range("B" & ss.Row),  
    .Range("F" & ss.Row), 
    .Range("G" & ss.Row), .Range("H" & ss.Row),  
    .Range("N" & ss.Row), 
    .Range("O"& ss.Row), .Range("Q" & ss.Row), 
    .Range("U" & ss.Row), 
    .Range("W" & ss.Row)) 
    tlr = tws.Range("A" &  
    tws.Rows.Count).End(xlUp).Offset(1).Row 
    rng.Copy tws.Cells(tlr, "A") 
    ElseIf LCase(ss.Cells.Value) = "No" Then 
    End If 
    Next 

    End With 









    End Sub 

ответ

1

Попробуйте добавить это перед строкой, которая добавляет новую книгу.

On Error Resume Next

Комплект TWS = Sheets ("Отчет")

On Error Goto 0

Если не TWS ничего после этого Application.DisplayAlerts = False tws.Delete Application.DisplayAlerts = True End If

Смежные вопросы