我正在使用以下代码将特定范围从Workbook
复制到另一个Workbook
,其工作正常。
但现在我需要在粘贴到目标表之前按升序对Range
进行排序,而不更改源。请帮忙。
With Workbooks(strExcelFile).Sheets(strSheetName)
.Range(strRange).Copy
End With
ActiveSheet.Range(strDestCell).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
答案 0 :(得分:2)
利用这一事实,一旦粘贴,您的新粘贴范围将被选中;然后你可以使用SELECTION。
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。
答案 1 :(得分:1)
使用范围时,应尽量避免使用冗余Select
。您可以使用下面的worksheets
和ranges
更干净地工作,根据您的问题,这可以轻松适应工作簿
<强>码强>
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