Макрос запускается, когда файл защищен - PullRequest
0 голосов
/ 01 февраля 2019

Я сделал макрос, который создает график, но нужно защитить файл паролем.

Конечно, когда я защищаю файл, макрос перестает работать.

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

Есть идеи, как мне это исправить?

Option Explicit
Sub protection()

    Worksheets("Sheet1").Unprotect "abc123"

End Sub

Function (here is my function code)

End Function

Sub protection2()
Worksheets("Sheet1").protect "abc123"

End Sub

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

На защищенном листе нельзя изменить ячейки, которые заблокированы.Вы можете не поиграть с прикрепленным кодом:

Option Explicit

Sub SheetSetup()
    Range("B3:C7").Locked = False
    Range("E3:F7").Locked = True   'This is default
End Sub

Sub Sample_ProtectedSheet()
    ClearValues
    ChangeAllValues_on_ProtectedSheet
    MsgBox ("Only values in ""B4:C7"" are set to ""yes""!")
End Sub

Sub Sample_UnprotectedSheet()
    ClearValues
    ChangeAllValues_on_UnprotectedSheet
    MsgBox ("All values set to ""yes""!")
End Sub


Function ChangeAllValues_on_UnprotectedSheet()
    Call Unprotect
    On Error Resume Next
    Range("B4:C7").Value = "yes"
    Range("E4:F7").Value = "yes"
    On Error GoTo 0
End Function

Function ClearValues()
    Call Unprotect
    On Error Resume Next
    Range("B4:C7").Value = ""
    Range("E4:F7").Value = ""
    On Error GoTo 0
End Function

Function ChangeAllValues_on_ProtectedSheet()
    Call Protect
    On Error Resume Next
    Range("B4:C7").Value = "yes"
    Range("E4:C7").Value = "yes"
    On Error GoTo 0
End Function

Sub Protect()
    Worksheets("Sheet1").Protect "abc123"
End Sub

Sub Unprotect()
    Worksheets("Sheet1").Unprotect "abc123"
End Sub

enter image description here

0 голосов
/ 01 февраля 2019

Полагаю, вы хотите запустить одну подпроцедуру, чтобы добиться цели.Мой пример снимает защиту с вашего листа, позволяет функции творить чудеса и защищает лист.

Option Explicit
Sub protection()

    Worksheets("Sheet1").Unprotect "abc123"

    Call Function (here may be values for your arguments)

    Worksheets("Sheet1").protect "abc123"
End Sub

Function (here may be prameters)

    the function code belongs here

End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...