2017-09-17 91 views
0

嗨傢伙,我創建VBA項目,我需要從一個工作簿中切換到另一個,我需要動態活動工作簿的名稱Excel的VBA在工作簿活動使用的變量不工作(獲得動態活動工作簿的名稱)

,所以我在嘗試使用此代碼,在這裏我得到錯誤「腳本超出範圍」

Dim wb 
wb = ActiveWorkbook.FullName 
wb = Split(wb, "\")(UBound(Split(wb, "\"))) 
Workbooks("wb").Activate 

,但是當我改變活動的工作簿,以靜態的..這代碼工作的動態名稱...

Dim wb 
Workbooks("project1.xlsm").Activate 

請幫傢伙..因爲我需要活動工作簿中的動態名稱...

+0

爲什麼不做'Dim wb As Workbook''Set wb = ActiveWorkbook',然後只需使用'wb'來引用工作簿而不必'激活'它呢? – YowE3K

+0

(但是如果你**有**名稱,只需使用'wb = ActiveWorkbook.Name',然後使用'Workbooks(wb)'參考工作簿。) – YowE3K

+0

@ YowE3K用Dim wb更新了我的代碼工作簿,現在的錯誤是「對象變量或與塊變量未設置」 –

回答

1

你在現有的代碼錯誤是由您嘗試使用String文字"wb"不是變量wb造成的。所以下面應該工作:

Dim wb As String 
wb = ActiveWorkbook.FullName 
wb = Split(wb, "\")(UBound(Split(wb, "\"))) 
Workbooks(wb).Activate 

但是,使用FullName,然後剝離路徑組件是使用Name財產沒有什麼不同:

Dim wb As String 
wb = ActiveWorkbook.Name 
Workbooks(wb).Activate 

但它會更好,只是創建一個Workbook對象並直接使用它:

Dim wb As Workbook 
Set wb = ActiveWorkbook 
wb.Activate 

注意:極少數情況下需要使用ActivateSelect。沒有看到你的下面的代碼很難幫助你很好的代碼,但也許是這樣的:

Dim wb As Workbook 
Set wb = ActiveWorkbook 
wb.Worksheets("Sheet1").Range("A1").Value = wb.Worksheets("Sheet1").Range("A2").Value 

這可能是一個想法,檢查出的答案this question

+0

謝謝......這裏是我的代碼[鏈接](https:// jpst 。它/ 14Xgc) –

相關問題