![](/img/trans.png)
[英]Why do I get a runtime error 424 when trying to set a word doc from an excel worksheet
[英]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.