复制并粘贴错误

我的配方有什么问题吗? 我正在尝试使用一个公式来使我能够在继续进行之前或者msgbox提示继续或者找不到工作簿/工作表之前,让我对gotoreference(Ie f5)单元格进行validation,以确认单元格是否正确。 有时候这个人因为是季度数据而留下空白,我想自动提取最新的数据(最远的)列。

我有两个工作簿:一个是我正在运行macros的当前工作簿(Currentworkbook.xlsx)。 另一个是'Mysheettab'的Jedata.xlsx和其他一些没有在这里列出的工作簿,将把信息提供给'Sheet1'的Currentworkbook.xlsx。

 Option explicit Sub Macro3() ' Macro3 Macro ' ' Keyboard Shortcut: Ctrl+q ' Dim wb As Workbook Dim ws As Worksheet On Error Resume Next Set wb = ActiveWorkbook("Jedata") Set ws = ActiveWorkbook.Sheets("Mysheettab") On Error GoTo 0 If ws Is Nothing Then MsgBox "Data sheet not found" Else Activate.Windows ("wb") Sheets("ws").Select Application.Goto Reference:=Range("AG28:AG32").Select Selection.Copy Windows("Currentworkbook").Activate Selection.Copy Range("H10:H14").Select ActiveSheet.Paste Application.CutCopyMode = False End If End Sub 

我可以在代码中看到很多错误。

首先是事情。 您避免使用.Activate/.Select 。 有趣的阅​​读

接下来关于Activate.Windows ("wb")"之间的任何事情将被视为一个string,我想你想尝试

 wb.Activate 

但是就像我提到的,你应该避免使用.Activate/.Select 。 你的代码可以写成( UNTESTED

 Sub Macro3() Dim wb As Workbook, thiswb As Workbook Dim ws As Worksheet, thisws As Worksheet On Error GoTo Whoa Set thiswb = thisowrkbook Set thisws = thiswb.ActiveSheet Set wb = Workbooks("Jedata") Set ws = wb.Sheets("Mysheettab") ws.Range("AG28:AG32").Copy thisws.Range("H10") Application.CutCopyMode = False Exit Sub Whoa: MsgBox Err.Description End Sub