【发布时间】:2018-11-27 05:02:43
【问题描述】:
我正在尝试从另一个工作表中的变量范围设置数据验证列表。但是,我无法使用第一段代码来定义范围。这是我的代码:-
Private Sub Workload_Schedule_Conditional_Formatting()
Dim LastRowWS As Long, LastRowPS As Long, rng As Range, ProjectRange As Range
LastRowPS = Worksheets("Project_Summary").Range("B" & Rows.Count).End(xlUp).Row
Set ProjectRange = Worksheets("Project_Summary").Range(Cells(2, 1), Cells(LastRowPS, 2))
LastRowWS = Worksheets("Workload_Schedule").Range("A" & Rows.Count).End(xlUp).Row
Set rng = Worksheets("Workload_Schedule").Range(Cells(4, 3), Cells(LastRowWS, 7))
'Other code for validation list.
End Sub
Set rng 行出现错误。我不知道为什么这会引发错误,但 Set ProjectRange 行没有(它基本上是完全相同的代码,但在不同的工作表中)。
【问题讨论】:
-
您只需要完全限定
Cells调用 - 它们隐式引用ActiveSheet。此外,在过程名称中应避免蛇形大小写 - 下划线在 VBA 中作为接口分隔符具有特殊含义。我会重命名这个WorkloadScheduleConditionalFormatting。 -
非常感谢 Comintem!这最好在 With 命令中完成,还是在每次调用 Cell 之前指定工作表?
-
我个人会使用
With语句,但是对于 2 次调用,直接使用工作表引用确实不会对性能产生太大影响。 -
再次感谢!你能帮我弄清楚如何限定单元格的工作表引用的格式吗?我假设这将类似于 Set ProjectRange = WSPS.Range(WSPS.Cells(2, 1), WSPS.Cells(LastRowPS, 2)) - 我将 WSPS 设置为 Worksheet 和 = Worksheets("Project_Summary ")。