#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 за советы по циклу