1

我正在使用以下代码将特定范围从 a 复制Workbook到 another Workbook,它工作正常。

但现在我需要Range在粘贴到目标工作表之前按升序排序而不更改源。请帮忙。

With Workbooks(strExcelFile).Sheets(strSheetName)
     .Range(strRange).Copy
End With

ActiveSheet.Range(strDestCell).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False
4

2 回答 2

2

利用粘贴后将选择新粘贴的范围这一事实;然后你可以使用选择。

Public Sub test()
     Range("A1:A8").Copy
    ActiveSheet.Range("B1").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False
    Selection.Sort key1:=Range("B1")
End Sub

该测试示例适用于任何包含 A1-A8 中一些数据的 Excel 文件。两个地方的 B1 都可以用 strDestCell 代替,A1:A8 可以用 strRange 代替,用于您最终的子例程。

于 2013-02-22T06:18:04.190 回答
1

Select在使用范围时,您应该尽量避免冗余。您可以更干净地工作worksheetsranges如下所示,根据您的问题,这很容易适应工作簿

代码

Sub ReCut()
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Dim rng1 As Range
    Set ws1 = ThisWorkbook.Sheets(1)
    Set ws2 = ThisWorkbook.Sheets(2)
    Set rng1 = ws1.Range("A1:A10")
    With ws2.[b1].Resize(rng1.Rows.Count, 1)
        .Value = rng1.Value
        .Sort ws2.[b1]
    End With
End Sub
于 2013-02-23T02:47:32.677 回答