excel - 如何在 vba 中引用名称不同的工作表名称

标签 excel vba range

我正在尝试使用 vba 引用具有通用名称和唯一编号的工作表范围,以在每张工作表上明确范围。但我收到 1004 错误。

For lngWeek = 1 To 53
    strSheet = "Week" & Trim(Str(lngWeek))
    strRange = strSheet & "!B5:H7"
    Range(strRange).Activate
Next
工作表是 Week1、Week2 等,我需要清除每张工作表上的 B5:H7 范围。从第 1 周一直到第 53 周。
为什么 Range.Activate 无法选择每个页面?

最佳答案

您在这里收到错误 1004:

Range(strRange).Activate

因为strRange符合图纸要求,但 Range不是;这是一个 implicit ActiveSheet reference ,这意味着 Range.Activate成员(member)通话只能在 strRange 时有效指的是已经在 ActiveSheet 上的单元格.建议:重命名strRangecellAddress或真正有意义的东西。 "str"-for-String 没用; “哦,那是一个地址”是 ;-)
为了能够选择特定的Range ,您必须首先取消引用 Worksheet您打算使用的对象 - sheetName包含工作表的名称:
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(sheetName)
然后是 strRange地址不再需要 WeekXX!部分:
ws.Activate
ws.Range("B5:H7").Select
请注意,除非是为了方便用户,否则通常没有理由 SelectActivate VBA 中的任何内容:当您正确限定正在使用的所有对象时,当 ActiveSheet 时,您将不会收到错误 1004。不是您的代码假定的工作表处于事件状态,因为代码将不再假定工作表处于事件状态。

关于excel - 如何在 vba 中引用名称不同的工作表名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67692258/

相关文章:

python - 如何在 Python 中执行 n range() ?

excel - 超链接excel公式

vba - 为什么我的 Excel 电子表格将数字格式设置为日期?

vba - Excel 中的图表不会更新 (2007)

excel - VBA 将范围复制到最后一行并粘贴到新工作表上,单元格 A19 之后的第一个空行

vba - 如何在 VBA/Access 中以编程方式测试验证规则

javascript - 在 dragover/drop 事件中获取 Firefox contenteditable 拖放光标位置

excel - 如果月份和年份与该行中的 dd/mm/yyyy 格式的日期单元格匹配,则返回该行中的所有单元格值

php - 可以在 PHP 中将大型 csv 文件编写为 xls 表吗?

python - 验证字符串是否仅包含一系列数字 Python 2.7