通过更改表名称循环的VBAmacros

所以我们有一个工具可以生成一堆数据,但是可以随机地命名这些工作表。 我有简单的命令来复制,粘贴和sortingExcel表格上的各自的文字,但我的问题是我无法弄清楚如何使我产生的工作表的列表循环通过所有这些工作表,而没有指定名称开始..我不希望它遍历所有表,因为我需要它忽略第一个表…

我收到错误424对象请求错误。 任何帮助将不胜感激。

所以我设置了所有的整数和variables

Dim x As Integer Dim y As Integer Dim a As Integer Dim b As Integer Dim compoundname As Range Dim compoundtype As Range Dim compoundrng As Range x = 1 y = 3 a = 3 b = 2 

y,a,b都与我最后一部分遗漏的设置有关。

所以在这里,我告诉它,我想复合名称是活跃表格上的范围,我认为这是我的实际问题?

 Set compoundname = Workbook.ActiveSheet.Range("A3") Set compoundrng = Sheets("AllSheets").Range("A3:A100") 

在将所有工作表添加到工作簿之后,我在“AllSheets”工作表中存储名称的循环

 For Each ws In Worksheets Sheets("AllSheets").Cells(x, 1) = ws.Name x = x + 1 Next ws 

那么我们必须告诉它访问这个列表:

 For Each compoundtype In compoundrng.Cells 

在这里复制,粘贴和sorting我的信息

 Next compoundtype 

你为什么不这样做

 For Each ws In Worksheets if(ws.Name <> 'YourFirstSheetName') Then 'copy, paste and sort info here. end if Next ws 

编辑:更新您的评论。 如果您不关心单元格格式,则不要使用复制/粘贴命令。 只要设置单元格等于其他单元格的值。 这样你就不必使用剪贴板或活动表格/单元格等等。

  Dim ws As Worksheet Dim x As Integer Dim y As Integer Dim a As Integer Dim b As Integer Set ws = Worksheets("Quant Sheet") y = 3 Worksheets("Quant Sheet").Activate For Each ws In ActiveWorkbook.Worksheets If (ws.Name <> "Quant Sheet") Then Sheets("Quant Sheet").Cells(y, 1) = ws.Range("A3") y = y + 1 End If Next ws