Excel VBA选择不同工作簿中的范围以进行排序

时间:2015-02-10 14:55:54

标签: excel vba excel-vba

首先让我感谢stackoverflow上的所有人。谷歌在我寻找Excel VBA问题的解决方案时多次带我到这个论坛,我通常在这里找到了我需要的东西。那就是说,

我正在构建一个宏或一组宏,从一个电子表格中获取所选数据并将其复制到新创建的工作簿中的另一个工作表。我想到了排序特定范围的最后一个难题,并在尝试选择新工作簿中的特定范围时继续获得运行时错误'1004',然后我想对其进行排序。我尝试了多种解决方案,使用类似于下面示例的代码,并使用Cells来定义范围。在我寻找解决方案的过程中,我已经在这方面做了很多工作。

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

1 个答案:

答案 0 :(得分: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

我希望这有效(对我有用)