【发布时间】:2020-12-12 06:48:47
【问题描述】:
我正在尝试在工作表 HDaER 中命名一个动态范围。
范围应该是从.Cells(3, 2) 到HDaERCloseLR(最后一行)和HDaERCloseLR(最后一列)的填充区域。
到目前为止,我有这个:
1 Dim HDaER As Worksheet
2 Dim HDaERCloseLR As Integer
3 Dim HDaERCloseLC As Integer
4 Dim HDaERCloseDNR As Range
5 Dim HDaER As String
6 Set HDaER = Sheets("HDaER")
7
8 With HDaER.Cells
9 HDaERCloseLR = .Find(What:="*", LookIn:=xlFormulas, LookAt:=xlPart, _
10 SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
11
12 HDaERCloseLC = .Find(What:="*", LookIn:=xlFormulas, LookAt:=xlPart, _
13 SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
14
15 Set HDaERCloseDNR = HDaER.Range(HDaER.Cells(3, 2) & _
16 HDaER.Cells(HDaERCloseLR, HDaERCloseLC))
17 End With
18
19 Scope.Names.Add Name:=HDaERClose, RefersTo:=HDaERCloseDNR
20
21 HDaERClose.Select
我明白了
运行时错误“1004” - 对象“_Worksheet”的“方法“范围”失败”
在第 15 行,我有 Set HDaERCloseDNR = HDaER.Range(HDaER.Cells(3, 2) & HDaER.Cells(HDaERCloseLR, HDaERCloseLC))。
我在第 21 行对命名范围 HDaERClose 使用了 .Select 命令来测试代码,但从不去那里。
我必须选择范围,但我需要的是直到第一个数据集的最后一行(示例中为 105)和最后一列(示例中为 E)的范围。
应排除第 105 行和 E 列的数据。
【问题讨论】:
-
我没有看到任何你为
HDaERClose赋值的地方。我想你想用引号将它括起来"HDaERClose"然后你会用Range("HDaERClose").Select调用它 -
在模块顶部使用
Option Explicit(帮助)防止因@ScottCraner 未声明的变量引起的错误,并显示其余代码。根据您提供的内容,Scope对象未实例化/分配。 -
那你要
with hdaer.cells(3,2).currentregion -
@ScottCraner:我在复制代码时错过了那行。我在上面的代码中进行了编辑 - 在第 5 行添加了
Dim HDaERClose As String。 -
不,我很好,谢谢。很高兴能帮上忙。
标签: vba excel named-ranges