activesheet.range.select错误438

我需要从一个工作簿复制数据到另一个,但任何时候我试图运行我的macros,获取包含“select”操作的行上的运行时错误“438”。 谢谢大家,对不起,如果我做了noob错误,但我相对新vba 🙂

这是我的代码:

Private Sub FileChoose_Click() Dim fd As FileDialog Dim FileName As String Dim wb1 As Workbook Set wb1 = ActiveWorkbook Dim wb2 As Workbook Set fd = Application.FileDialog(msoFileDialogOpen) Dim filechosen As Integer filechosen = fd.Show fd.Title = "Scegliere il file da confrontare" fd.InitialView = msoFileDialogViewSmallIcons fd.Filters.Clear fd.Filters.Add "Excel File", "*.xlsx" fd.Filters.Add "Excel File con Macro", "*.xlsm" fd.FilterIndex = 1 fd.ButtonName = "Apri" If filechosen <> -1 Then MsgBox "Nessun File Selezionato" Else FileName = fd.SelectedItems(1) Set wb2 = Workbooks.Open(FileName) Call Insert(wb2, wb1) End If End Sub Private Sub Insert(wb2 As Workbook, wb1 As Workbook) Dim myrange As Range Set myrange = Range("B2:GT22") For i = 1 To 24 wb2.Worksheets(i).Activate wb2.ActiveSheet.myrange.Select <--- there is the error Selection.Copy wb1.Worksheets(i + 1).Activate wb1.ActiveSheet.myrange.Select Selection.Paste Next i End Sub 

另一个很好的理由,你不应该使用。select

这是你正在尝试?

 Private Sub Insert(wb2 As Workbook, wb1 As Workbook) Dim FromRng As Range, ToRng As Range Dim i As Long For i = 1 To 24 Set FromRng = wb2.Worksheets(i).Range("B2:GT22") Set ToRng = wb1.Worksheets(i + 1).Range("B2:GT22") myrange.Copy ToRng Next i End Sub 

myrangevariables是一个范围引用,但你使用它像一个stringvariables。 你实际上可以不用Select方法并使用它:

 Private Sub Insert(wb2 As Workbook, wb1 As Workbook) Dim myrange As String myrange = "B2:GT22" For i = 1 To 24 wb2.Worksheets(i).Range(myrange).Copy wb1.Worksheets(i + 1).Range(myrange).Paste Next i End Sub 

请在错误发生前定义MyRange的位置,首先定义它,然后再激活另一个工作表,并尝试访问MyRange,而它在上一个工作表中时会生成错误,请在以下位置设置MyRange:

  wb2.Worksheets(i).Activate 

它会工作