首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自动创建工作表的Excel问题

自动创建工作表的Excel问题
EN

Stack Overflow用户
提问于 2014-01-03 14:25:54
回答 1查看 170关注 0票数 0

嗨,我已经创建了一个VBA,从所有数据表中获取信息,并在工作表中绘制它。工作表是自动生成的,这很好,但问题是VBA只应该创建唯一的工作表--但是情况并非如此。示例:如果在我的所有数据表中,我有3次IKEA,那么当vba第一次遇到IKEA时,它应该创建一个工作表,而它应该忽略任何重复。

实际

宜家;页2;页3

想要

宜家

VBA代码

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-03 14:31:24

尝试以下代码(只有在没有名为MyCell.Value的工作表时,它才会创建新的工作表):

代码语言:javascript
运行
复制
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 Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20905804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档