Ошибка 1004 во время выполнения VBA: ошибка, определенная приложением или объектом

#excel #vba #range

#excel #vba #диапазон

Вопрос:

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

Ошибка возникает в строке ActiveWorkbook.Рабочие листы (до).Диапазон (Rng).Заблокировано = True

Заранее спасибо за любую помощь 🙂

Грег

 Sub LockRange()

Dim Rng As Range
Dim PW As String
Dim UpTo As Integer, Count As Integer


Set Rng = Selection


PW = Application.InputBox(Title:="Password", Prompt:="Enter Worksheet Password", Type:=2)
Debug.Print PW


Count = ActiveWorkbook.Worksheets.Count
Debug.Print Count

    For UpTo = 1 To Count
    Debug.Print UpTo
        ActiveWorkbook.Worksheets(UpTo).Unprotect PW
            ActiveWorkbook.Worksheets(UpTo).Range(Rng).Locked = True
        ActiveWorkbook.Worksheets(UpTo).Protect PW
    Next UpTo
      
End Sub
  

Комментарии:

1. Rng это уже объект диапазона с прикрепленным родительским листом, активным листом. вы захотите: ActiveWorkbook.Worksheets(UpTo).Range(Rng.address).Locked = True

2. For Each Ws in ActiveWorkbook.Worksheets это обычный способ перебора всех листов.

3. Это сработало отлично, спасибо 🙂 и спасибо BigBen за советы по циклу