【问题标题】:Macro Loop with Dynamic Range具有动态范围的宏循环
【发布时间】:2013-06-11 15:20:37
【问题描述】:

我正在尝试使用 Excel 自动执行以下过程,但我遇到了一些困难,因为显然我需要在 OFFSET 函数中设置一个变量:

Sheets("XXX").Visible = True
Sheets("XXX").Select
ActiveWorkbook.Names.Add Name:="XXX_aaa", RefersToR1C1:= _
    "=OFFSET('XXX'!R2C1,0,1,COUNTA('XXX'!C1),21)"
Sheets("XXX").Visible = False

Sheets("YYY").Visible = True
Sheets("YYY").Select
ActiveWorkbook.Names.Add Name:="YYY_bbb", RefersToR1C1:= _
    "=OFFSET('YYY'!R2C1,0,1,COUNTA('YYY'!C1),21)"
Sheets("YYY").Visible = False

Sheets("ZZZ").Visible = True
Sheets("ZZZ").Select
ActiveWorkbook.Names.Add Name:="ZZZ_ccc", RefersToR1C1:= _
    "=OFFSET('ZZZ'!R2C1,0,1,COUNTA('ZZZ'!C1),21)"
Sheets("ZZZ").Visible = False`

有没有一个简单的宏函数可以用来自动化这个任务(它必须重复 30 次!)

谢谢!

【问题讨论】:

  • 重复30次你有多少张?你能给我们你想重复的工作表索引吗?床单 1:30?或例如 2:31?您必须至少有 1 张始终可见
  • 嗨,是的,我有一个控制表。第 2 到 31 页必须重复此操作。

标签: function excel offset vba


【解决方案1】:

在您正在使用的工作簿的 COPY 上试试这个:

Sub Sample()
Dim intCurrentSheet As Integer
Dim lngLastRow As Long

For intCurrentSheet = 2 To 31

    lngLastRow = Sheets(intCurrentSheet).Range("U1048576").End(xlUp).Row

    Sheets(intCurrentSheet).Range("A2:U" & lngLastRow).Name = Sheets(intCurrentSheet).Name & _
                                                           "_" & Chr(intCurrentSheet + 63) & _
                                                           Chr(intCurrentSheet + 63) & _
                                                           Chr(intCurrentSheet + 63)
    Sheets(intCurrentSheet).Visible = False

Next intCurrentSheet

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 2019-03-29
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多