2017-02-16 14 views
0

Я новый пользователь vba.Подкатегория вне пределов досягаемости - Большинство компьютеров работают нормально (шахта включена)

Существует недавно проблема VBA, которая оставила меня довольно невежествен и беспомощен - индекс вне диапазона - на компьютере конкретного пользователя, когда каждый пользователь, кажется, не имеют проблему с помощью макроса (включая меня), поэтому я не может просто проб и ошибок устранить неполадки.

Следовательно, действительно нужна экспертная помощь от всех вас! Действительно очень оценили !!

Я использовал серию vba, которые будут запускаться один за другим и вставлять их в хронологическом порядке следующим образом.

VBA 1

Sub VBA_1() 
Dim ws As Worksheet 

     For Each ws In ActiveWorkbook.Worksheets 

     ws.Outline.ShowLevels 1, 1 

     Next ws 
    End Sub 

VBA 2

Sub VBA_2() 

Dim ws As Worksheet 

For Each ws In ActiveWorkbook.Worksheets 

ws.Protect ("Password") 

Next ws 

End Sub 

VBA 3

Sub VBA_3() 
Dim iRet As Integer 
Dim strPrompt As String 



'Prompt 
strPrompt = "This will take about 2 minutes. Click 'OK' to proceed." 

'Show msgbox 
iRet = MsgBox(strPrompt, vbOKCancel) 

'When user clicked 'OK'.. 
If iRet = vbOK Then 

'SaveAs Function 
Dim fName As String 

fName = Application.GetSaveAsFilename(, "Excel Binary Workbook (*.xlsb), *.xlsb") 
If fName = "False" Then 
MsgBox "File not saved.", vbOKOnly 
Cancel = True 
End If 

Application.EnableEvents = False 
ThisWorkbook.SaveAs Filename:=fName, FileFormat:=xlExcel12 
Application.EnableEvents = True 

' Calculate 
    Application.Calculate 
    Application.ScreenUpdating = True 


' Outlet 
    Worksheets("Total Outlets").Activate 
'Copy and Paste this portion to each worksheet 
     For Each cell In Range("A1") 
      If cell.Value = "Not Applicable" Then 
      ActiveSheet.Visible = xlSheetHidden 
     Else 
      Call HypMenuVRefresh 
     End If 
    Next 
'End Outlet & Copy and Paste 

    Worksheets("D11101").Activate 
     For Each cell In Range("A1") 
      If cell.Value = "Not Applicable" Then 
      ActiveSheet.Visible = xlSheetHidden 
     Else 
      Call HypMenuVRefresh 
     End If 
    Next 

    Worksheets("D11102").Activate 
     For Each cell In Range("A1") 
      If cell.Value = "Not Applicable" Then 
      ActiveSheet.Visible = xlSheetHidden 
     Else 
      Call HypMenuVRefresh 
     End If 
    Next 

'Hide sheets accordingly 
Worksheets("Restaurant List").Visible = xlSheetVeryHidden 
Worksheets("Hotel List").Visible = xlSheetVeryHidden 

'Recalculate 
Application.Calculate 
Application.ScreenUpdating = True 


'Renaming of tabs 
Dim ws As Worksheet 

For Each ws In ActiveWorkbook.Worksheets 
    If ws.Range("A2").Value = 1 Then 
     If ws.Visible = xlSheetVisible Then 
      On Error Resume Next 
       ws.Name = ws.Range("A10").Value 
     End If 
    End If 
Next ws 


'Save Workbook 
ActiveWorkbook.Save 

'Enable finishing screen to be 'Input' 
Sheets("Input").Select 

'Show msgbox 
MsgBox ("Retrieval Completed!") 


Else 

MsgBox ("Retrieval of Data Cancelled") 

End If 

End Sub 
+1

В какую строку он вызывает ошибку? – CallumDA

+0

замените 'ActiveWorkbook' на' ThisWorkbook' и 'ActiveSheet' с' ThisWorkbook.Worksheets («имя листа») 'и если все еще выдает сообщение с кодом' HypMenuVRefresh' слишком http://stackoverflow.com/documentation/excel- vba/1107/vba-best-practices/9292/avoid-using-select-or-activate – Slai

+0

Сложно сказать, но это скорее всего код, как это отбрасывает вас .....Рабочие листы (), это приведет к этой ошибке, если лист не существует и, возможно, если он не доступен (не уверен в дальнейшем) –

ответ

0

я могу думать о следующих возможных причины, но не сказать, ни один из них является истинной причиной:

"... на компьютере конкретного пользователя ..."

Тогда:

  • версия Excel/VBA отличается;

  • somehwere глобальный Option Base установлен (но я считаю, что это невозможно установить глобальным, то есть применимым ко всем загруженным книгам);

  • где-то разделитель «жестко закодирован», который не соответствует глобальным настройкам Windows (панель управления -> регион и язык -> форматы -> дополнительные настройки);

  • Язык отличается от отражения в VBA (например, имя ключевого слова/функции на родном языке или имена идентификаторов с несимметричными символами ASCII несимметричных символов ASCII).

Чтобы найти в том, где программа обнаруживает ошибку (и останавливается), сделать функцию, которая выводит сообщение о состоянии в файл после каждого важного шага. Удостоверьтесь, что закрыл файл после каждого сообщения, чтобы сообщение действительно написано.