2017-02-05 87 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