繁体   English   中英

运行时错误 424; 尝试 DIM 命名(在多个工作簿中找到)工作表

[英]RunTime-Error 424; Trying to DIM a named (found in multiple workbooks) Worksheet

我有一个月度报告,所以我有一个模板,我每个月都会更新,然后运行代码来更新几十个工作簿。 我想设置需要排序的特定工作表,这样我每个月只需要更改1行代码(而不是几十个)。

我已成功将每个工作簿设置为 WB1(模板)、WB2、WB3 等,并且每个工作簿都具有相同的工作表(Jan、Feb、Mar 等)。 我的代码将复制我在模板中所做的工作,将其粘贴到每个工作簿中,更新它们的数据透视表,然后在月度工作表上对结果进行排序。

'Dim March worksheet?

Dim WS As Worksheets
    Set WS = Workbook.Sheets("Mar")

'sort for worksheets
'Macro3 Macro


wb2.WS.Sort.SortFields.Add Key:=Range("C3:C190" _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With wb2.WS.Sort
        .SetRange Range("B2:E189")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
        .SetRange Range("B191:E8040")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

我希望能够更改暗淡(即下个月的“APR”),因为我有许多工作簿需要在该工作表上进行排序。 目前,如果我不尝试将工作表变暗,而只是将 WS 替换为 Worksheets("Mar") 它可以工作,但这将需要对“APR”、“May”等进行数十次更改。 我只想更改设置变量的行中的“Mar”。

Dim WS As Worksheets是问题的一部分。 你想要它As Worksheet (没有“s”,它是一张纸,而不是一张纸的集合)。 然后你尝试分配它:

Set WS = Workbook.Sheets("Mar")

我们不知道Workbook是什么,但假设它持有对您打算使用的Workbook对象的有效对象引用,您将需要从Worksheets集合中取消引用该Worksheets以避免以后出现意外:工作Sheets可以包含Worksheet对象,还有Chart项目,以及其他六个没有Range成员的非工作表遗留工作表类型。

wb2.WS.Sort....

假设wb2已经拥有对您要使用的Workbook对象的引用 (?),它是一个公开Workbook接口成员的Workbook对象,其中不包括任何WS成员。 如果WS是上面声明和分配的Worksheet对象,那么您不需要限定它:就像Range知道它属于什么Worksheet一样, Worksheet知道Workbook属于什么。

您的意思是直接与WS吗?

WS.Sort.....

再向下:

.SetRange Range("B2:E189")

那个不合格的Range隐含地指的是当前是ActiveSheet任何工作表 - 可能不是你想要做的。 那应该是WS.Range吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM