Я уже установил элемент вручную с именем «Test» в классе AllowEditRange. Мне просто нужно изменить диапазон этого элемента с помощью VBA, но я не мог. Я попробовал следующий код, но он ничего не сделал (ошибки не возникли) Спасибо всем, кто может помочь.

Option Explicit
Option Compare Text

Private Sub Modify_User_EditRange()

    Dim ws As Worksheet
    Set ws = ThisWorkbook.ActiveSheet

    ws.Protection.AllowEditRanges("Test").Range = ws.Range("A2:A8")

End Sub

enter image description here

0
Waleed78 26 Ноя 2021 в 10:57
ws.Protection.AllowEditRanges("Test").Range возвращает объект Range и по умолчанию ссылается на его свойство Value (таким образом, ваш код фактически говорит «измените значение диапазона на значение ws.Range("A2:A8")»). Чтобы изменить Range - вам необходимо использовать Set, например. Set ws.Protection.AllowEditRanges("Test").Range = ws.Range("A2:A8")
 – 
Raymond Wu
26 Ноя 2021 в 11:00
Ву работает отлично, не могли бы вы опубликовать в качестве ответа, может быть, кому угодно
 – 
Waleed78
26 Ноя 2021 в 11:33

1 ответ

Лучший ответ

ws.Protection.AllowEditRanges("Test").Range возвращает объект Range, поэтому для его изменения вам необходимо использовать оператор Set:

Set ws.Protection.AllowEditRanges("Test").Range = ws.Range("A2:A8")

2
Raymond Wu 26 Ноя 2021 в 11:38