【问题标题】:Naming worksheets in a loop VBA在循环VBA中命名工作表
【发布时间】:2015-05-25 18:26:04
【问题描述】:

我正在尝试根据 Sheets("Run").Range("F4") 中的名称列表命名工作表到最后一行数据。当我命名一个工作表时,我下面的代码有效。

Sub list_Days()


Dim sName As String
Dim i As Integer
i = ActiveWorkbook.Worksheets.Count

sName = Sheets("Run").Range("F4")

Worksheets("Security Distribution").Copy After:=Worksheets(i)
ActiveSheet.Name = sName

End Sub

我的问题:有人可以帮助我解决我的问题的有效循环

【问题讨论】:

  • this answer 中的解决方案存在一个预先存在的 Rows.Count 而不是 Row.Count 问题,您已表示已解决。我已经编辑了答案以反映Rows.Count
  • 非常感谢。答案在那种情况下是有效的,但它在我现在正在运行的另一个宏中不起作用。如果我应用上面的答案,我会得到错误的命名。
  • 上述方法第一次可以使用,但第二次您必须重新定义 i,因为它不再等于工作表的数量。每次添加另一个工作表并为其命名时,i 必须由 1 提出或使用 i = ActiveWorkbook.Worksheets.Count 重新分配。
  • 你不能有多个同名的工作表
  • @Jeeped 谢谢,现在已经解决了

标签: vba loops excel


【解决方案1】:

这应该是一个简单的for x = y to z 循环,在目标范围内有一个增量(假设其余代码按预期工作)-

Sub list_Days()

Dim sName As Range
Dim i As Integer
Dim j As Integer
i = ActiveWorkbook.Worksheets.Count
j = 0
sName = Sheets("Run").Range("F4")


 For x = 1 To i
 Set sName = sName.Offset(j, 0)
 Worksheets("Security Distribution").Copy After:=Worksheets(x)
 ActiveSheet.Name = sName.Value
 j = j + 1
 Next

End Sub

【讨论】:

    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多