2013-03-22 66 views
1

试图执行下面的子例程设置变量VBA错误

,当我得到一个错误“运行时错误:9,下标超出范围”

其突出的第一变量声明。起初我认为这是由于错误的数据类型造成的,但是改变和玩弄它没有运气。

我也试过两种细胞&范围

Public vFolderPath As String 
Public vCMFNewPath As String 
Public vKBNewPath As String 
Public vDPI As Integer 

Private Sub SetGlobal() 

Dim vGo As String 
Dim vTemplateLocation As String 
Dim vCMFFilename As String 
Dim vKBFilename As String 
Dim vDriver As String 
Dim vPKG As String 

    vDPI = Workbooks("tools.xlsm").Sheets("SETTINGS").Range("B2").Value 

    vFolderPath = Workbooks("tools.xlsm").Sheets("SETTINGS").Range("B3").Value & "\" 

任何想法?

+0

你从哪里(在工作表或模块)运行子?这可能会影响可见性。尝试单独测试每个变量以确保拼写正确,例如'MsgBox Workbooks(“tools.xlsm”)。Name','MsgBox Workbooks(“tools.xlsm”)。Sheets(“SETTINGS”)。Name' - 希望能够确定问题出在哪里。 – MattCrum 2013-03-22 12:05:36

+0

这是完整的代码吗?你的'End Sub'在哪里?为了消除这个显而易见的问题:你打开一个名为'tools.xlsm'的工作簿,并且该工作表有一个名为'SETTINGS'的工作表,对吧? – Sam 2013-03-22 12:58:23

+0

代码只是OP的第一行,表示第一行出现错误。我倾向于同意问题在于文件和或标签错误地命名或不存在。 – 2013-03-22 13:44:23

回答

2

代码工作正常,从名为Tools.xslm的文件运行。一个名为Settings的选项卡,单元格B2中的整数和单元格B3中的字符串值。

这适用于从个人xlsb中的模块或Tools.xlsm内的模块运行。即使你没有声明任何变量,它也可以工作。

+0

thks计算出它即将与文件版本一起工作,并在某处将其重命名为tool.xlsm thks以获得所有帮助 – midaym 2013-03-22 15:36:57

+0

很高兴你知道了,没有比试图修复多个版本的文件更令人沮丧的事了! – 2013-03-22 17:05:40

0

试试下面的代码:

Public vFolderPath As String 
Public vCMFNewPath As String 
Public vKBNewPath As String 
Public vDPI As Integer 

Private Sub SetGlobal() 


    Dim vGo As String 
    Dim vTemplateLocation As String 
    Dim vCMFFilename As String 
    Dim vKBFilename As String 
    Dim vDriver As String 
    Dim vPKG As String 

    Dim wkbSetting As Workbook, shtSetting As Worksheet 

    On Error Resume Next 
    Set wkbSetting = Workbooks("tools.xlsm") 
    On Error GoTo 0 

    On Error GoTo err_rout 
    If Not wkbSetting Is Nothing Then 

     On Error Resume Next 
     Set shtSetting = wkbSetting.Sheets("SETTINGS") 
     On Error GoTo 0 

     On Error GoTo err_rout 
     If shtSetting Is Nothing Then 
      Err.Raise Number:=32, Description:="Sheets Settings not found" 
     End If 


     vDPI = CInt(shtSetting.Range("B2").Value) 
     vFolderPath = shtSetting.Range("B3").Value & "\" 

    Else 
     Err.Raise Number:=31, Description:="Workbook - tools.xlsm not found" 
    End If 


Exit Sub 
err_rout: 
    MsgBox Err.Description, vbInformation 

End Sub