2013-03-22 68 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