Excel VBA – 结合导入和导出macros

我有两个单独的名为ImportData和ExportData的macros。 ExportData将数据发送到名为Temp的表单。 它以后被发送到一个.csv文件。 所有这一切工作正常。 例如:

Sheets("Orders").Range("A1:C6").Copy Sheets("Temp").Range("A55:C60").PasteSpecial xlPasteValues 

ImportData与ExportData相反:例如:

  Sheets("Temp").Range("A55:C60").Copy Sheets("Orders").Range("A1:C6").PasteSpecial xlPasteValues 

有没有办法做到这一点,而不是有两个基本相同的macros,除了复制和粘贴触发翻转?

每个macros都有上百行的复制和粘贴,而不仅仅是2行。

如果你在工作表上创build一个“从”和“到”地址表(可以隐藏,如果有必要),那么你可以使用类似的东西,这将是更易于pipe理:

 Sub Tester() CopyIt ' defaults to Import CopyIt False ' specify Export End Sub Sub CopyIt(Optional DoImport As Boolean = True) Dim rw As Range, r1 As Range, r2 As Range For Each rw In Sheet1.Range("A1:B50").Rows Set r1 = Sheets("Temp").Range(rw(1).Value) Set r2 = Sheets("Orders").Range(rw(2).Value) Next rw If DoImport Then r2.Value = r1.Value Else r1.Value = r2.Value End If End Sub 
 Sub PasteFromTo(FromRange As Excel.Range, ToRange As Excel.Range) FromRange.Copy ToRange.PasteSpecial xlPasteValues End Sub 

像这样称呼它:

 Sub test() PasteFromTo Sheets("Temp").Range("A55:C60"), Sheets("Orders").Range("A1:C6") End Sub