复制当前工作簿中的数据并将其粘贴到另一个打开的用户表单列表中

我想要一个button打开一个用户窗体与所有打开的工作簿的列表。 用户select他们想要的工作簿,代码复制当前工作簿中固定范围的数据,并将其粘贴到用户选定工作簿中的固定范围内。

在search时,我发现了这个代码,它的工作原理类似,但是从选定的工作簿中复制并粘贴到当前的代码中。

Option Explicit Const PSWD = "atari" Private Sub CancelButton_Click() Unload Me End Sub Private Sub CopyPasteButton_Click() ActiveSheet.Unprotect Password:=PSWD 'This code will be executed when the "Copy" button is clicked on the userform. Dim wsData As Worksheet Dim rCopy As Range Dim CopyRw As Long Set wsData = ThisWorkbook.Sheets("SALES Details") With Application .DisplayAlerts = False .ScreenUpdating = True With wsData .Unprotect PSWD CopyRw = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 End With On Error GoTo exit_err With Workbooks(Me.ListBox1.Value).Sheets("Master Sheet") Set rCopy = .Cells(10, 1).CurrentRegion Set rCopy = rCopy.Offset(1, 0).Resize(rCopy.Rows.Count - 1, 40) rCopy.Copy ThisWorkbook.Sheets("SALES Details").Cells(CopyRw, 1) End With Unload Me exit_err: wsData.Protect Password:=PSWD .DisplayAlerts = True .ScreenUpdating = True .CutCopyMode = False End With End Sub Private Sub UserForm_Activate() 'Populate list box with names of open workbooks, excluding main workbook. Dim wb As Workbook For Each wb In Workbooks If wb.Name <> ThisWorkbook.Name Then ListBox1.AddItem wb.Name Next wb End Sub 

这个代码很好,它的function。 我一直在试图编辑它没有运气。 我如何编辑这个方向以反转方向,并将其从当前图纸(A50:J57)的固定范围复制到用户选定图纸(A4:J11)上的固定范围?

我认为这应该工作。 当然,你必须修改代码中的表名。

 Private Sub CopyPasteButton_Click() Dim mySheet As Worksheet, otherSheet As Worksheet On Error GoTo exit_err Application.DisplayAlerts = False Set mySheet = ThisWorkbook.Sheets("SheetXYZ") Set otherSheet = Workbooks(Me.ListBox1.Value).Sheets("SheetABC") mySheet.Range("A50:J57").Copy Destination:=otherSheet.Range("A4:J11") exit_err: Application.DisplayAlerts = True End Sub 

UPDATE

对于复制值而不是范围的公式,请使用此代码而不是复制function:

 mySheet.Range("A50:J57").Copy otherSheet.Range("A4:J11").PasteSpecial xlPasteValuesAndNumberFormats 

有关PasteSpecialfunction的更多选项,请参阅文档 。