循环更改工作表名称的VBA宏

时间:2017-05-11 01:15:05

标签: excel vba excel-vba loops

因此,我们有一种工具可以生成大量数据,但可以有效地随机命名工作表。我有简单的命令来复制,粘贴和排序Excel工作表上的相应文本,但我的问题是我无法弄清楚如何使我生成的工作表列表循环通过所有这些工作表而不指定名称开始..我不希望它循环遍历所有工作表,因为我需要它来忽略第一张工作表.​​..

我收到错误424 Object Req'd错误。任何帮助将不胜感激。

所以我设置了所有的整数和变量

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

在此处复制,粘贴和排序我的信息

Next compoundtype

1 个答案:

答案 0 :(得分:1)

为什么不做

之类的事情
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