2017-03-17 65 views
2

我似乎无法获得语法更正如下:语法错误与命名范围

表(DCRLog)在AE365命名区域称为EndSrtRnge

我试图将电子表格从A3到AE365排序

Dim StSrtRnge As Range 
Set StSrtRnge = Range("A3") 

Dim NdSrtRnge As Range 
Set NdSrtRnge = Range("EndSrtRnge") 

Dim SortRnge As Range 
Set SortRnge = Range(StSrtRnge:NdSrtRnge)*********Syntax Error 

最终使用的语句是

SortRnge.Sort Key1:=SortKey, Order1:=xlAscending, Header:=xlYes 

回答

1

你应该使用:

Set SortRnge = Range(StSrtRnge,NdSrtRnge) 

或与您的语法,你需要:

Set SortRnge = Range(StSrtRnge.Address & ":" & NdSrtRnge.Address) 
+0

非常感谢,谢谢 –

+0

@ChrisSmith:不客气!顺便说一句,当一个答案解决了你的问题,你应该接受它(灰色滴答下投票)以标记你的问题为答案! ;) – R3uK

1

范围预计用逗号或字符串地址分开的两个细胞。
目前RANGE("A3")Range("EndSrtRnge")可能在不同的工作表上,如果在设置了Range("A3")时出现错误的工作表 - 您尚未指定打开的工作表。

Sub Test() 

Dim NdSrtRnge As Range 
Set NdSrtRnge = Range("EndSrtRnge") 

Dim StSrtRnge As Range 
'Ensure the start range is on the same sheet as the named range. 
'Using just RANGE will place it on the currently active sheet. 
Set StSrtRnge = NdSrtRnge.Parent.Range("A3") 

Dim SortRnge As Range 
Set SortRnge = NdSrtRnge.Parent.Range(StSrtRnge, NdSrtRnge) 

End Sub 

只是双重检查 - 对Sheet1设置EndSrtRnge,然后运行之前选择Sheet2只使用Range("A3")当代码产生的Application-defined or object-defined error