Начало выполнения Ошибка 13 - макрос VBA excel - PullRequest
0 голосов
/ 27 февраля 2019

enter image description here Привет, у меня есть файл Excel.В файле Excel есть макрос для очистки зависимого выпадающего списка.Когда мы копируем значение из одной строки в другую строку или из одного столбца в другой столбец, мы получаем ошибку времени выполнения 13. Не могли бы вы помочь нам решить проблему

Код:

Private Sub Worksheet_Change(ByVal Target As Range)
           If Target.Row > 2 And Target.Row < 100 Then

   If Target.Column = 2 And Target.Cells.Count = 1 And Target.Value = "Create Account_Personal" Then   
    Target.Offset(0, 3).Value = "NA"
   Target.Offset(0, 4).Value = "NA"
   Target.Offset(0, 5).Value = "NA"
   Target.Offset(0, 6).Value = "NA"
   Target.Offset(0, 7).Value = "NA"
   Target.Offset(0, 8).Value = "NA"
   Target.Offset(0, 9).Value = "NA"
   Target.Offset(0, 10).Value = "NA"
   Target.Offset(0, 11).Value = "NA"
     Target.Offset(0, 19).Value = "NO"
   Target.Offset(0, 22).Value = "NO THANKS"

      ElseIf Target.Column = 2 And Target.Cells.Count = 1 And Target.Value <> "Create Account_Personal" Then
      Target.Offset(0, 3).Value = "Select Country"

End If
   If Target.Column = 5 And Target.Cells.Count = 1 And Target.Value <> "NA" Then
   Target.Offset(0, 1).Value = "select State"
   Target.Offset(0, 2).Value = ""
   Target.Offset(0, 3).Value = ""
   Target.Offset(0, 4).Value = ""
   Target.Offset(0, 5).Value = ""
   Target.Offset(0, 6).Value = ""
   Target.Offset(0, 7).Value = ""
   Target.Offset(0, 9).Value = ""
   Target.Offset(0, 10).Value = ""
   Target.Offset(0, 11).Value = ""
   Target.Offset(0, 12).Value = ""
   Target.Offset(0, 13).Value = ""
   Target.Offset(0, 14).Value = ""
   Target.Offset(0, 15).Value = ""
  End If

End If
End Sub`enter code here`

image

1 Ответ

0 голосов
/ 27 февраля 2019
  1. Отключить события, используя Application.EnableEvents = False
  2. Для последовательных ячеек используйте…

    Target.Parent.Range(Target.Offset(0, 3), Target.Offset(0, 11)).Value = "NA"
    

    … чтобы записать NA между столбцами 3 и 11. Чтонамного короче и быстрее.


Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    On Error GoTo ENABLE_EVENTS

    If Target.Row > 2 And Target.Row < 100 Then
        If Target.Column = 2 And Target.Cells.Count = 1 Then
            If Target.Value = "Create Account_Personal" Then
                Target.Parent.Range(Target.Offset(0, 3), Target.Offset(0, 11)).Value = "NA"
                Target.Offset(0, 19).Value = "NO"
                Target.Offset(0, 22).Value = "NO THANKS"
            ElseIf Target.Value <> "Create Account_Personal" Then
                Target.Offset(0, 3).Value = "Select Country"
            End If
        End If

        If Target.Column = 5 And Target.Cells.Count = 1 Then
            If Target.Value <> "NA" Then
                Target.Offset(0, 1).Value = "select State"
                Target.Parent.Range(Target.Offset(0, 2), Target.Offset(0, 7)).Value = ""
                Target.Parent.Range(Target.Offset(0, 9), Target.Offset(0, 15)).Value = ""
            End If
        End If
    End If

ENABLE_EVENTS:
    Application.EnableEvents = True
    If Err.Number <> 0 Then Err.Raise Err.Number, Err.Source, Err.Description, Err.HelpFile, Err.HelpContext
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...