Давайте возьмем этот простой файл Excel в качестве примера для моего вопроса. Обратите внимание, что он содержит макрос перестановки VBA скрипт.

Я хочу, чтобы ячейки в столбце B были доступны только для чтения / неизменными для ввода с клавиатуры, т. Е. Мы не можем обновлять ячейки путем ввода значений с клавиатуры. Но эти значения можно обновить с помощью макроса MyPermute

Как я могу попасть туда?

1 ответ1

1

Сначала напишите макрос защиты, который защитит ввод

Sub protect()

Worksheets("sheet1").protect "Password", UserInterfaceOnly:=True

End Sub
  1. Далее перейдите к review - unprotect sheet и введите пароль для снятия защиты
  2. Теперь перейдите к review - allow users to edit ranges
  3. Нажмите new и определите диапазон, который вы хотите, чтобы пользователи могли редактировать.
  4. Нажмите на permissions а затем add и введите имя объекта Everyone
  5. Теперь возвращайся ОК - ОК - ОК
  6. Запуск Protect Macro , чтобы защитить все , кроме диапазонов , определенных.
  7. Измените ваш макрос, чтобы разблокировать, действовать, заблокировать (это будет работать для любого макроса)

    Sub MyPermute()
    Dim rng As Range
    Set rng = Range("A1:A10")
    
    Dim varValues As Variant
    Dim i As Long, j As Long, n As Long
    
    Worksheets("sheet1").Unprotect "Password"
    
    varValues = rng.Cells
    n = UBound(varValues, 1)
    For ii = 1 To 100
        i = MyRandomNum(1, n)
        j = MyRandomNum(1, n)
        subSwap varValues, i, j
    Next ii
    
    Range("B1:B10") = varValues
    
    Worksheets("sheet1").protect "Password", UserInterfaceOnly:=True
    
    End Sub
    

Модифицированный файл Excel

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .