嗨,我已经创建了一个VBA,从所有数据表中获取信息,并在工作表中绘制它。工作表是自动生成的,这很好,但问题是VBA只应该创建唯一的工作表--但是情况并非如此。示例:如果在我的所有数据表中,我有3次IKEA,那么当vba第一次遇到IKEA时,它应该创建一个工作表,而它应该忽略任何重复。
实际
宜家;页2;页3
想要
宜家
VBA代码
Sub CreateSheetsFromAList()
Dim iReply As Integer
Dim MyCell As Range, MyRange As Range
On Error Resume Next
Range("B1").End(xlUp).AdvancedFilter _
Action:=xlFilterCopy, CopyToRange:=rListPaste.Cells(1, 1), Unique:=True
Set MyRange = Sheets("ALL").Range("B1")
Set MyRange = Range(MyRange, MyRange.End(xlDown))
For Each MyCell In MyRange
Sheets.Add After:=Sheets(Sheets.Count) 'creates a new worksheet
Sheets(Sheets.Count).Name = MyCell.Value ' renames the new worksheet
Next MyCell
End Sub发布于 2014-01-03 14:31:24
尝试以下代码(只有在没有名为MyCell.Value的工作表时,它才会创建新的工作表):
Sub CreateSheetsFromAList()
Dim iReply As Integer
Dim MyCell As Range, MyRange As Range
Dim sh as Worksheet
On Error Resume Next
Range("B1").End(xlUp).AdvancedFilter _
Action:=xlFilterCopy, CopyToRange:=rListPaste.Cells(1, 1), Unique:=True
Set MyRange = Sheets("ALL").Range("B1")
Set MyRange = Range(MyRange, MyRange.End(xlDown))
For Each MyCell In MyRange
Set sh = Nothing
Set sh=Sheets(MyCell.Value)
If sh is Nothing Then
Sheets.Add After:=Sheets(Sheets.Count) 'creates a new worksheet
Sheets(Sheets.Count).Name = MyCell.Value ' renames the new worksheet
End If
Next MyCell
End Subhttps://stackoverflow.com/questions/20905804
复制相似问题