У меня есть 2 командные кнопки в текущем листе, обе кодируются, мне нужно правильное кодирование - PullRequest
0 голосов
/ 27 марта 2020

Я новичок в VBA, поэтому очень мало опыта. Я создал 2 командные кнопки с кодировкой basi c. Причиной для 2 командных кнопок является окраска шрифта. Если нажата командная кнопка 1, шрифт будет черным (видимым на листе и редактируемым), если нажата командная кнопка 2, шрифт станет белым (невидимым) при печати отчета. Я скопировал код ниже, чтобы сделать это, и все работает нормально. При копировании и перемещении листа в одну и ту же рабочую книгу командные кнопки копируются, но когда я нажимаю одну кнопку, появляется сообщение об ошибке и происходит код> В основном имя рабочего листа необходимо изменить. Может кто-нибудь помочь мне в создании кода, который будет автоматически работать на всех листах при копировании - мне нужно около 35 листов

Мой код

Sub Changefontcolor()
'this code is the change font color in range of cells
'code start after this line'

Selection.Font.Color = vbRed

End Sub

Private Sub CommandButton1_Click()
'this code is the change front color in rage of cells
'code start after this line'

Worksheets("Audit Template").Range("K76:L92").Select
Selection.Font.Color = vbBlack


End Sub


Private Sub CommandButton2_Click()
'this code is the change front color in rage of cells
'code start after this line'

Worksheets("Audit template").Range("K76:L92").Select
Selection.Font.Color = vbWhite
End Sub

1 Ответ

1 голос
/ 27 марта 2020

Проблемы при копировании листов с элементами управления

Любой код листа (Sheet1)

Option Explicit

Private Sub CommandButton1_Click()
    RangeToBlack
End Sub
Private Sub CommandButton2_Click()
    RangeToWhite
End Sub

Стандартный модуль (Module1)

Option Explicit

Public Const cRange As String = "K76:L92"

Sub ChangeToRed()
' change font color in any selected range to 'Red'
    Selection.Font.Color = vbRed
End Sub

Sub RangeToBlack()
' change font color in cRange to 'Black'
    ActiveSheet.Range(cRange).Font.Color = vbBlack
End Sub

Sub RangeToWhite()
' change font color in cRange to 'White'
    ActiveSheet.Range(cRange).Font.Color = vbWhite
End Sub

Теперь, если вы передумаете о цветах или диапазоне адресов, вы можете изменить все это в модуле (в одном месте). Как прокомментировал SJR, вы даже можете удалить "ActiveSheet.".

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