Msgbox появляется даже тогда, когда он не должен превосходить VBA

У меня проблема со следующим кодом:

month = Me.monthcbg.Value
year = Me.yrcbg.Value

If Len(Dir("L:\NAI_Groups\IS Monthly Operations Meeting\" & year, vbDirectory)) = 0 Then
    MkDir "L:\NAI_Groups\IS Monthly Operations Meeting\" & year
End If

If Len(Dir("L:\NAI_Groups\IS Monthly Operations Meeting\" & year & "\" & month, vbDirectory)) = 0 Then
    MkDir "L:\NAI_Groups\IS Monthly Operations Meeting\" & year & "\" & month
    MkDir "L:\NAI_Groups\IS Monthly Operations Meeting\" & year & "\" & month & "\1_LOP"
    MkDir "L:\NAI_Groups\IS Monthly Operations Meeting\" & year & "\" & month & "\2_Plants_Operations"
    MkDir "L:\NAI_Groups\IS Monthly Operations Meeting\" & year & "\" & month & "\3_Logistics_Purchasing_IT"
    MkDir "L:\NAI_Groups\IS Monthly Operations Meeting\" & year & "\" & month & "\4_Development_Changes"
ElseIf Len(Dir("L:\NAI_Groups\IS Monthly Operations Meeting\" & year & "\" & month, vbDirectory)) <> 0 Then
    mes = MsgBox("A presentation already exists, would you like to overwrite the existing presentation?", vbYesNo, "Presentation Exists")
        If mes = vbNo Then
            Exit Sub
        ElseIf mes = vbYes Then
            On Error Resume Next
            Kill "L:\NAI_Groups\IS Monthly Operations Meeting\" & year & "\" & month & "\1_LOP\" & month & "\" & year & ".pptx"
            MsgBox "Old Presentation Deleted"
            Set Error = 0
        End If
End If

Месяц и год измеряются как строки. Первая проблема состоит в том, что msgbox всегда появляется, даже если нет существующего каталога, вторая проблема - даже если выбран vbyes, код не создает каталог.

Спасибо

1 ответ

Я на самом деле не вижу проблемы с кодом, но я немного почистил

Dim root_dir As String
Dim sub_dir(3) AS String

month_str = Me.monthcbg.Value
year_str = Me.yrcbg.Value

root_dir = "L:\NAI_Groups\IS Monthly Operations Meeting\"  & year_str
sub_dir(0) = "\1_LOP"
sub_dir(1) = "\2_Plants_Operations"
sub_dir(2) = "\3_Logistics_Purchasing_IT"
sub_dir(3) = "\4_Development_Changes"

If Len(Dir(root_dir, vbDirectory)) = 0 Then MkDir root_dir


If Len(Dir( root_dir "\" & month_str, vbDirectory)) = 0 Then
    MkDir root_dir & "\" & month_str
    For i =0  to UBound(sub_dir) -1
         MkDir root_dir & "\" & month_str & "\" & sub_dir(i)
    Next i
Else 
    mes = MsgBox("A presentation already exists, would you like to overwrite the existing presentation?", vbYesNo, "Presentation Exists")
        If mes = vbNo Then
            Exit Sub
        ElseIf mes = vbYes Then
            On Error Resume Next
            Kill root_dir & "\" & month_str & "\1_LOP\" & month_str & "\" & year_str & ".pptx"
            MsgBox "Old Presentation Deleted"
            Set Error = 0
            Goto 0
        End If
End If
Другие вопросы по тегам