2012-04-26 6 views
1

Следующий код - это начало суб, чтобы удалить повторяющиеся строки из файла журнала, отсюда и название. Однако, после тестирования того, что у меня есть до сих пор, я не могу понять, почему это дает мне ошибку. Вот код:VBA - Почему это дает мне ошибку?

Sub cleanUpLogFile() 

Dim logFileStr As String 

Dim newBook As Workbook 
Dim fd1 As FileDialog 

MsgBox "Select your log file.", vbInformation, "Important Info" 
Set fd1 = Application.FileDialog(msoFileDialogFilePicker) 
With fd1 
    .AllowMultiSelect = False 
    .Filters.Clear 
    .Filters.Add "*.xl* Files", "*.xl*", 1 
    'if user selects a file then 
    If .Show Then 
     'assign selection to variable 
     logFileStr = fd1.SelectedItems.Item(1) 
     Else 'display prompt and exit sub 
      MsgBox "You didn't select your indexation file. Exiting...", _ 
       vbCritical, "Important Info" 
      Exit Sub 
    End If 
End With 

Set newBook = Workbooks.Open(logFileStr, 0) 
newBook.Close (0) 
Set newBook = Nothing 

MsgBox "finished" 

errHandler: 
MsgBox "Encountered an error: " & Err.Number & " -> " & Err.Description, _ 
     vbExclamation, "Error! - from cleanUpLogFile() sub" 
Err.Clear 
Exit Sub 
End Sub 

Поле сообщения об ошибке также не дает мне много информации; err.Number отображается как «0», а соответствующее описание от err.Description отсутствует.

Любые идеи?

Thanks, QF.

ответ

2

Вам не хватает выписки Sub Sub перед вашим errHandler: label.

Ярлык в VB - это действительно просто закладка для позиции в коде, поэтому, если вы хотите, чтобы ваша функция выходила, прежде чем вводить код под этикеткой, вам нужно сказать ему об этом.

В вашем случае, несмотря на отсутствие ошибки, код под меткой errHandler: будет работать, и на выходе действительно говорится: «ошибки не было».

Таким образом, измените свой код:

... more code 
Set newBook = Nothing 

MsgBox "finished" 
Exit Sub 
errHandler: 
MsgBox "Encountered an error: " & Err.Number & " -> " & Err.Description, _ 
     vbExclamation, "Error! - from cleanUpLogFile() sub" 
Err.Clear 
Exit Sub 
End Sub 
+0

Doh! Привет, спасибо. –

0

Вы можете устранить с помощью первоначально пытается запустить то, что работает. Если он не запускается с пустым с ... End. С этим ошибка выходит за пределы. В противном случае вы узнаете, что внутри. Затем добавьте строку внутри С ... Завершить Сразу и увидеть, когда появится всплывающее окно, а затем попытаться изменить эту строку.

Надеюсь, это поможет.

Смежные вопросы