У меня есть код, который вводит правильные или неправильные метки в пользовательской форме. Я хотел раскрасить слово «неправильно» и ободрить его. Это работает хорошо, но если ответ становится правильным, цвет шрифта изменится на черный по желанию, но ободрение сохраняется. Я нашел несколько ссылок на похожие проблемы, что-то о необходимости ссылаться на объект из какого-то родительского класса или что-то в этом роде.
Я искал в Google и не смог найти ответ, есть помощь, которую я не могу понять на форуме Microsoftстраниц. https://answers.microsoft.com/en-us/msoffice/forum/all/cant-set-fontbold-property-to-false/a006b96b-d1ec-41a4-8411-f5774941a5a0
https://www.ozgrid.com/forum/forum/help-forums/excel-general/25823-if-bold-then-make-not-bold-if-not-bold-then-make-bold
Private Sub CommandButton3_Click()
'
' showwrong Macro
'
Dim i As Integer
'' reset labels to default - testing direct referencing.
Me.Controls("Label37").Font.Bold = Not True ' doesnt work
Me.Controls("Label37").Font.Bold = False ' doesnt work
'' reset labels to default
For i = 1 To 36
Me.Controls("Label" & 36 + i).Font.Bold = False ' doesnt work
Me.Controls("Label" & 36 + i).Caption = ""
Me.Controls("Label" & 36 + i).ForeColor = &H80000012
Me.Controls("Label" & 36 + i).BackColor = &H80000002
Next i
Dim lastrow As Integer
lastrow = Sheet1.Range("f16") ' number of questions in test
''lastrow = Sheet1.Range("b" & Sheet1.Rows.Count).End(xlUp).Row - 6
'' get value from sheet 1 (c7:c42)
For i = 1 To lastrow
Me.Controls("Label" & 36 + i).Caption = Sheet1.Range("c" & 6 + i).Value
''' EMPHASIZE
If Me.Controls("Label" & 36 + i).Caption = "Wrong" Then
Me.Controls("Label" & 36 + i).ForeColor = &HFF&
Me.Controls("Label" & 36 + i).Font.Bold = True
Me.Controls("Label" & 36 + i).BackColor = &H80000002
Debug.Print Me.Controls("Label" & 36 + i).Caption; "colour red"
''' DE-EMPHASIZE after output (font to black ok but still bold)
Else
Me.Controls("Label" & 36 + i).ForeColor = &H80000012
Me.Controls("Label" & 36 + i).Font.Bold = False
Me.Controls("Label" & 36 + i).BackColor = &H80000002
"Debug.Print Me.Controls("Label" & 36 + i).Font.Bold' (always returns
True)"
End If
Next i
End Sub
Я ожидаю, что текст вернется в нормальное состояние.
ps дляцикл i = от 1 до 36 и «метка» и 36 + i не являются ошибками. этикетки от Label37 до Label72