2013-03-22 2 views
1

Я получаю сообщение об ошибке при попытке выполнить следующую подпрограммуНастройка переменных VBA ошибок

«Runtime Error: 9, подстрочный из диапазона»

его выделение первой переменной декларации. Сначала я подумал, что это связано с неправильным типом данных, но сменой и игрой с этим не повезло.

Я также попробовал обе клетки & Range

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»). Таблицы («НАСТРОЙКИ»). Name' - надеюсь, это определит, где проблема. – MattCrum

+0

Это полный код? Где ваш 'End Sub'? Ради устранения очевидного: у вас есть рабочая книга под названием «tools.xlsm» open, и у workboko есть лист с именем «НАСТРОЙКИ», правильно? – Sam

+0

Код - это только первые строки, так как OP говорит, что ошибка возникает в первой строке. Я склонен согласиться с тем, что проблема заключается в том, что файл или вкладка неправильно названы или не существуют. –

ответ

2

Код работает нормально, работает из файла Tools.xslm. с вкладкой «Настройки», целым числом в ячейке B2 и строковым значением в ячейке B3.

Это работает при запуске из модуля в Personal xlsb или из Tools.xlsm. Он работает, даже если вы не объявляете ни одну из переменных.

+0

THKS выяснил, что я работал с версиями файла и где-то он переименован в tool.xlsm thks для всей справки. – midaym

+0

Рад, что вы поняли это, ничего более неприятного, чем пытаться исправить вещи в нескольких версиях файлов! –

0

Try ниже код:

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