2017-05-22 25 views
-1

我有一个动态范围rng2A4:F?去。我试图从这个网站调整代码,但是当我尝试对它进行排序时不断收到错误。 Officers是一个字符串"E1:E" & last rowTgroup是一个字符串"D1:D" & last row排序功能不起作用

rng2.Sort key1:=Range(officers), Order1:=xlAscending, _ 
key2:=Range(tgroup), order2:=x1Ascending, Header:=x1No 

从评论:

i是使用计数器更早&为1列最后一行的下方。

Dim officers As String, tgroup As String, sArea As String, rng2 As Range 
officers = "E1:E" & (i - 4) 
tgroup = "D1:D" & (i - 4) 
sArea = "A4:F" & (i - 1) 
Set rng2 = rng.Range(sArea) 
rng2.Sort key1:=Range(officers), Order1:=xlAscending, _ 
      key2:=Range(tgroup), order2:=xlAscending, Header:=xlNo 

rngA1:F?一个范围,但已经合并单元格这就是为什么我有rng2

+1

您能否包含足够的代码来显示如何设置'rng2','officer'和'tgroup'。 (并且可能如何设置最后一行(?))。 – YowE3K

+4

“不工作”不是错误描述。你的错误是什么? –

+3

你在'order2:= x1Ascending'和'Header:= x1No'中得到了错别字,里面有一个'1',但它应该是小写'L',比如'xlAscending'和'xlNo'。 –

回答

0

假设要排序(不包括标题)的数据开始在ActiveSheet第4行,改变你的officerstgroup的定义是:

officers = "E4:E" & (i - 1) 
tgroup = "D4:D" & (i - 1) 
sArea = "A4:F" & (i - 1) 
'and probably best to set the sort area based on the sheet itself 
'to be consistent with how you have defined the keys 
Set rng2 = Range(sArea) 
0

排序不能正常工作的ISN原因就像@YowE3k建议的那样。答案是我没有准确定义这种排序的范围部分。解决的办法是:

rng2.Sort key1:=rng2.Range(officers), Order1:=xlAscending, _ 
     key2:=rng2.Range(tgroup), order2:=xlAscending, Header:=xlNo 

我没有使用rng2.Range所以它得到错误的区域&不能排序。