2015-02-10 75 views
0

进行排序,首先让我感谢在stackoverflow的所有人。谷歌在我寻找解决Excel VBA问题的解决方案时多次引导我参加这个论坛,并且我通常会在这里找到我需要的。这就是说,Excel VBA在不同的工作簿中选择范围以便对

我在建设的过程中宏或设置需要一个spreadheet并将其复制在新创建的工作簿中选择数据到另一个工作表的宏。当我尝试在新工作簿中选择一个特定的范围时,我将排序特定范围并继续得到运行时错误'1004'。我尝试过使用类似于下面示例的代码以及使用单元格来定义范围的多个解决方案。在搜索解决方案时,我已经在这个阶段使用Google了。

With nfmBook.Worksheets("Reading NFM") 
nfmBook.Sheets("Reading NFM").Activate 
nfmBook.Sheets("Reading NFM").Select 

nfmBook.Sheets("Reading NFM").Range("B" & sortStart & ":K" & sortEnd).Select 

Selection.Sort Key1:=Range("B"), Order1:=xlAscending, Key2:=Range("K") _ 
    , Order2:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, _ 
    Orientation:=xlTopToBottom, DataOption1:=xlSortTextAsNumbers, DataOption2 _ 
    :=xlSortTextAsNumbers 

    Cells(nfmRow, 11).Select 
    ActiveCell.FormulaR1C1 = "=SUM(Cells(sortStart,11),Cells(sortEnd,11))" 


End With 
+0

是否确定变量'sortStart'和'sortEnd'返回正确的开始和结束行? – user3561813 2015-02-10 15:08:28

+0

在你的'.Sort'行中,每个Range前面都有一个。所以它是'.Range(..'并从你的'With'语句中继承适当的工作簿和工作表,否则它会尝试使用工作表中不存在于'nfmBook'中的范围,它是什么导致了错误 – tigeravatar 2015-02-10 15:14:58

回答

1

你试过这种方式吗? (修订版)

Set SortRange = nfmBook.Sheets("Reading NFM").Range("B" & SortStart & ":K" & SortEnd) 
SortRange.Sort Key1:=SortRange.Cells(1, 1), Order1:=xlAscending, _ 
Key2:=SortRange.Cells(1, 10), Order2:=xlAscending, Header:=xlNo, _ 
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ 
DataOption1:=xlSortTextAsNumbers, DataOption2:=xlSortTextAsNumbers 

SortRange.Cells(1,1)在上述范围= “B” & SortStart

SortRange.Cells(1,10)的第一行的第一个单元是第十范围=“K”的第一行的单元格& SortStart

我希望这个作品(对我来说它的工作)

+0

该代码仍然存在相同的问题,其中Key1和Key2范围不适合相应的工作簿和工作表,因此代码将尝试使用“ActiveSheet”,这可能会导致相同的问题错误 – tigeravatar 2015-02-10 15:34:16

+0

@tigeravatar你是对的,我提出了答案 – genespos 2015-02-10 16:02:06

+0

更好,+1 :) – tigeravatar 2015-02-10 16:08:56

相关问题