2017-02-05 92 views
0

我有以下代碼Excel的VBA運行時錯誤

Sub ImportSolarData() 

Dim Year As Integer 
Dim DataBookName As Variant 

Dim SourceSheet As Worksheet 
Dim SourceBook As Workbook 
Dim SourceSheetName As String 

Dim TargetBook As Workbook 
Dim TargetSheet As Worksheet 
Dim TargetSheetName As String 

DataBookName = Application.GetOpenFilename 

If DataBookName = False Then 
    MsgBox ("You pressed cancel") 
    GoTo LeaveNow 
End If 

MsgBox (DataBookName) 

Year = InputBox("Enter the Year you wish to Import") 
SourceSheetName = Str(Year) 

Workbooks.Open Filename:=DataBookName 
MsgBox ActiveWorkbook.Name, , "Active Workbook Name" 
MsgBox SourceSheetName, , "Source Sheet Name" 

Sheets(SourceSheetName).Select 

LeaveNow: 

End Sub 

的代碼在最後一行翻倒 - 與此錯誤

運行時錯誤「-2147352565 (8002000b)':指定的維度對當前的圖表類型無效。

但我沒有在框架中的任何一個圖表 - 任何地方。我沒有一個,也沒有嘗試創建一個,而活動工作簿根本沒有任何圖表。

任何任何想法請 - 這是毀了我的週末! (在OSX Sierra上運行Excel 365)

+0

我只是一個業餘愛好者,並不知道你的問題。但可能[本文](http://stackoverflow.com/q/38572824/1726522)可能與您的問題有關。 – CMArg

+0

有很多錯誤和不必要的步驟,但如果您不告訴我們代碼*應該做什麼*,將很難提供幫助。另外 - 它好像你使用msgbox來檢查你的代碼。這可以在解決方案中刪除嗎? – CallumDA

回答

0

將您的最後幾行代碼替換爲下面的代碼。由於某種原因,您的輸入框會在4位數年份之前放置一個前導空格。實際上,當表單的名稱實際上是「2015」時,它沒有找到前導空間,因此它正在搜索名爲「2015」的表單。 trim()函數糾正了這一點。其次,您沒有設置工作簿或在最終的選擇命令中引用它。

除此之外,它看起來像很好的編碼。

Set SourceBook = Workbooks.Open(DataBookName, True, True) 
MsgBox ActiveWorkbook.Name, , "Active Workbook Name" 
MsgBox SourceSheetName, , "Source Sheet Name" 

SourceBook.Worksheets(Trim(SourceSheetName)).Select 
+0

謝謝 - 這是我第一次發佈論壇 - 從來沒有真正期望得到答案 - 更不用說解決方案了。非常感謝@JohnRichter – MikeMason