VBA excel添加新工作表并删除原来的
Posted
技术标签:
【中文标题】VBA excel添加新工作表并删除原来的【英文标题】:VBA excel add new worksheet and deleted the original 【发布时间】:2015-12-15 03:41:49 【问题描述】:我想创建一个按钮,用于添加新工作表并将数据从工作表(“数据”)提取到新工作表(“报告”)
但是,如果我再次单击该按钮,则会出现错误“工作表名称重复”
因此,我想在我的原始代码中添加一个函数,如果工作表名称为“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】:尝试在添加新工作簿的行之前添加它。
出错后继续下一步
设置 tws = Sheets("报告")
出错时转到 0
如果不是 tws 就什么都不是 Application.DisplayAlerts = False tws.删除 Application.DisplayAlerts = True 结束如果
【讨论】:
以上是关于VBA excel添加新工作表并删除原来的的主要内容,如果未能解决你的问题,请参考以下文章
excel vba复制数据范围,打开新的xlsx文件重命名表并保存
如何将行从一个 Excel 工作表复制到另一个工作表并使用 VBA 创建重复项?