Изменение значений в нескольких столбцах с помощью Select Case - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь создать макрос, который будет сбрасывать документ по умолчанию в зависимости от значения при запуске кода. Столбец, на который я смотрю, чтобы увидеть, что он читает, это столбец E или 5. Затем мне нужно изменить значение для ячейки в столбцах 5 и 7.

Когда я запускаю его без ячеек ( х, 7) строк, это работает безупречно, я предполагаю, что я пропускаю некоторый синтаксис.

 Sub Reset_Submitted_Document_HW_ALSTOM()

ActiveSheet.Unprotect
Dim answer As Integer

answer = MsgBox("Do you want to reset the Submittted Document for Sign Of Year? This is typically performed at year end to clear the tracker.", vbQuestion + vbYesNo + vbDefaultButton2, "Reset Submitted Document Checkmark")

If answer = vbYes Then

Application.ScreenUpdating = False
For x = 1 To Cells(Rows.Count, "E").End(xlUp).Row
 Select Case (Cells(x, 5))


 Case "Reset Default Date"

 Cells(x, 5) = "Reset Default Date"

 Cells(x, 7).Formula = "=Today()"

 Case "Final Update"

 Cells(x, 5) = "Reset Default Date"

 Cells(x, 7).Formula = "=Today()"

 Case "Final Action Taken SPD"

  Cells(x, 5) = "Populate Previous SPD"

 Cells(x, 7) = ""

 Case "Populate Previous SPD"

  Cells(x, 5) = "Populate Previous SPD"

 Cells(x, 7) = ""

 Case Else
 Cells(x, 5).Formula = "="""""
 End Select
Next x
Application.ScreenUpdating = True

 Else
  MsgBox "No Updates have been made to the tracker."
End If
ActiveSheet.Protect
End Sub

Ваша помощь очень ценится.

Заранее спасибо

Обновление: отвеченный код запускается, но не изменяет дату и не сбрасывает ячейки в столбце E с надписью «Окончательное обновление» на «Сброс даты по умолчанию». Я думаю, что это может иметь какое-то отношение к остановке xlUp частично вниз столбец E? Смотрите скриншот, чтобы вы могли получить визуальное представление о структуре листа.

введите описание изображения здесь

1 Ответ

0 голосов
/ 03 апреля 2020

Некоторые незначительные исправления

Если вы не используете Option Explicit (не рекомендуется), ошибки нет. Когда вы используете его, возникает ошибка компиляции, потому что x не dim med.

Строки, содержащие .formula, должны быть изменены, потому что, например, данные будут изменены на дату, когда Вы снова открываете книгу, но вам нужна дата, когда был сделан сброс. Точно так же вам не нужна формула = "" в столбце, содержащем только значения.

Если вы хотите сделать то же самое для двух условий в операторе Select Case, вы разделяете их запятой в тот же случай. Запятая означает Or.

Если код остановится посередине, ScreenUpdating останется False. Сделайте некоторую обработку Error.

Option Explicit

Sub Reset_Submitted_Document_HW_ALSTOM()

    ActiveSheet.Unprotect

    Dim answer As Long
    Dim x As Long

    answer = MsgBox("Do you want to reset the Submittted Document " _
      & "for Sign Of Year? This is typically performed at year end to clear " _
      & "the tracker.", vbQuestion + vbYesNo + vbDefaultButton2, _
      "Reset Submitted Document Checkmark")

    If answer <> vbYes Then MsgBox _
      "No Updates have been made to the tracker.": GoTo ProgramExit

    Application.ScreenUpdating = False

        On Error GoTo ProgramError

        For x = 1 To Cells(Rows.Count, "E").End(xlUp).Row
            Select Case (Cells(x, 5))
                Case "Reset Default Date", "Final Update"
                    Cells(x, 5) = "Reset Default Date"
                    Cells(x, 7) = Date ' Cells(x, 7).Formula = "=Today()"
                Case "Final Action Taken SPD", "Populate Previous SPD"
                    Cells(x, 5) = "Populate Previous SPD"
                    Cells(x, 7) = ""
                Case Else
                    Cells(x, 5) = "" 'Cells(x, 5).Formula = "="""""
            End Select
        Next

SafeExit:
    Application.ScreenUpdating = True

ProgramExit:
    ActiveSheet.Protect

Exit Sub

ProgramError:
    MsgBox "An unexpected error occurred."
    On Error GoTo 0
    GoTo SafeExit

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...