.TextFrame Код VBA не работает, пока рабочий лист защищен - PullRequest
0 голосов
/ 06 мая 2020

Я работаю над следующим кодом VBA, который управляет двумя кнопками:

Макрос 1

Sub ON_SWITCH()

'Set Position, Color
Worksheets(1).Shapes("ON_OFF1").Select

    With Selection
    .ShapeRange.IncrementLeft 30
    End With

Worksheets(1).Shapes("ON_OFF11").Select

    With Selection
    .ShapeRange.TextFrame2.TextRange.Characters.Text = "ON"
    .ShapeRange.TextFrame.HorizontalAlignment = xlHAlignLeft
    .ShapeRange.Fill.ForeColor.RGB = RGB(118, 208, 122)
    End With

'Change cell in reference sheet
Sheets("Sheet1").Range("a1").Value = "ON"

'Set OFF_SWITCH on click
Sheets("Sheet1").Shapes("ON_OFF1").OnAction = "OFF_SWITCH"

'I'd like to remove...
Sheets("Sheet1").Range("A1").Activate

End Sub

Макрос 2

   Sub OFF_SWITCH()


'Set Position, Color
Worksheets(1).Shapes("ON_OFF1").Select

    With Selection
    .ShapeRange.IncrementLeft -30
    End With

Worksheets(1).Shapes("ON_OFF11").Select


    With Selection
    .ShapeRange.TextFrame2.TextRange.Characters.Text = "OFF"
    .ShapeRange.TextFrame.HorizontalAlignment = xlHAlignRight
    .ShapeRange.Fill.ForeColor.RGB = RGB(250, 118, 118)
    End With

'Change cell in reference sheet
Sheets("Sheet1").Range("a1").Value = "OFF"

'Set OFF_SWITCH on click
Sheets("Sheet1").Shapes("ON_OFF1").OnAction = "ON_SWITCH"

'I'd like to remove...
Sheets("Sheet1").Range("A1").Activate

End Sub

Это создает кнопку переключения в моей электронной таблице, переместив / отформатировав 2 фигуры и заполнив одну из фигур текстом при нажатии. Я хочу, чтобы у него был переключатель ВКЛ / ВЫКЛ с определенным стилем.

Однако приведенный выше код работает; когда я запускаю код в защищенном режиме, он выдает ошибку времени выполнения «438» и «-2147024809 (80070057)». Я также попытался добавить возобновление при ошибке, но текст формы больше не будет меняться с «Выкл.» на «Вкл.» и наоборот. наоборот. Я бы предпочел не защищать и не защищать, но я открыт, если это все параметры, которые у меня остались.

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

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