Код, который я сделал, предназначен для перехода вниз по двум столбцам в электронной таблице и создания папок в папках. Левый столбец имеет имя папки 1-го уровня, а второй столбец имеет папки в папке первого уровня.Вложенный при ошибке VBA
1st layer 2nd layer
3508023 131392
3508023 90701 - repeat
3508023 115469
3508023 358167
3705584 90701 - repeat
3705584 133214
3705584 349453
Мой код в настоящее время обрабатывает, если папка первого слоя уже существует, пропуская его, и идти к следующей итерации, но я не могу понять, как обрабатывать ошибку, если папка второго слоя уже существует с помощью вложенного сообщение об ошибке.
Вот код, у меня есть
Sub ProPlanner()
'
' ProPlanner Macro
'
Dim strRout As String
Dim strTask As String
Dim strPath As String
Dim RoutCellCol As Integer
Dim TaskCellCol As Integer
Dim RoutCellRow As Integer
Dim TaskCellRow As Integer
Dim NewRoutPath As String
Dim NewTaskPath As String
'declare staring cells in spreadsheet
RoutCellCol = 2
RoutCellRow = 2
TaskCellCol = 6
TaskCellRow = 2
Do Until TaskCellRow > 72 'ending row
strRout = Cells(RoutCellRow, RoutCellCol).Value
On Error GoTo TaskInRoute
'create first layer folder in shared file
NewRoutPath = ("S:DEPT\IE\Employee Files\Chris\" & "Rout " & strRout)
MkDir (NewRoutPath)
'create the first 2nd layer folder within the 1st layer folder just created
strTask = Cells(TaskCellRow, TaskCellCol).Value
NewTaskPath = (NewRoutPath & "\" & strTask)
MkDir (NewTaskPath)
IterationLoop:
RoutCellRow = RoutCellRow + 1
TaskCellRow = TaskCellRow + 1
Loop
Exit Sub
'error handler if 1st layer folder already exists
TaskInRoute:
strTask = Cells(TaskCellRow, TaskCellCol).Value
NewTaskPath = (NewRoutPath & "\" & strTask)
MkDir (NewTaskPath) 'error occurs here if 2nd layer folder already exists...nested on error statement?
Resume IterationLoop
Exit Sub
End Sub
'Sub ProPlanner()' - тот факт, что этот метод не начинается с глаголом говорит нам точно, что он делает, является признаком того, что он делает слишком много вещей. Разделите вещи, извлеките ответственность в отдельные функции и процедуры, каждый из которых отвечает за обработку собственного набора возможных ошибок. Я бы посоветовал вам поместить ваш код на [codereview.se] *, когда он будет работать так, как предполагалось *, если вы хотите получить экспертную оценку/отзывы по всем аспектам кода и советы по его очистке, более отказоустойчивости и как правило, легче поддерживать. –
Этот макрос - всего лишь одно время, но если я сделаю макрос, который широко или часто используется, я буду использовать обзор кода. Спасибо – Chris