在“ x.worksheets ...”行中,它不断抛出“下标超出范围错误”。该错误可能与我使用“ ThisWorkbook”的方式有关,但我不确定。我对此还很陌生。我的目标是从“ ThisWorkbook”中复制并将值粘贴到单独的工作簿中。
Dim x As Workbook
Set x = ThisWorkbook
fmPath = "G:\Finance Department\Banking Dashboard\"
FmFile = "Testing_Testing.xlsm"
FmSheet = "Closings Template"
FmRng = "02"
fmRef = fmPath & FmFile
ToPath = "G:\Budgets and Financial\CLT Budget Templates\"
ToFile = "Belle Grove Manor.xlsx"
ToSheet = "Sheet 2"
ToRng = "E2"
ToRef = ToPath & ToFile
x.Worksheets(FmSheet).Range(FmRng).Copy
Workbooks.Open(ToRef).Worksheets(ToSheet).Activate
ActiveSheet.Range(ToRng).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
答案 0 :(得分:1)
您不必总是声明一个变量-有时直接引用您的对象会更容易。下面的方法似乎比您目前使用的方法简单得多。
只需为工作表Closings Template
声明工作表变量x
,而不是使变量FmSheet
,FmRng
和ToSheet
变暗即可
我要摆脱的其他变量是ToRng
和FM.Range("O2")
。只需将实际值替换为这些值即可。您的代码将更易于遵循,并且需要更少的索引返回到变量块才能知道值是什么
该错误是由于范围无效引起的。没有范围“ 02”。这样输入代码可能有助于发现这些问题,因为您将直接在代码中输入范围,例如Sub Test1()
Dim FM As Worksheet: Set FM = ThisWorkbook.Sheets("Closings Template")
FM.Range("O2").Copy
End Sub
entry