Вопрос:
Я хочу изменить цвет шрифта из MsgBox
Чтобы понять, что я хочу, я выбрал этот пример:
Dim a As Integer Dim b As Integer Dim c As Integer Dim results As String a = InputBox(«Enter your first value:») b = InputBox(«Enter your second value:») c = InputBox(«Enter your third value:») d = a — b + c If d = 0 Then results = «Correct» MsgBox «Your results is: » & results Else results = «Incorrect» MsgBox » Your Results is: » & results End If
“Текст «Correct» я хочу быть с зеленым цветом, когда появляюсь в MsgBox
«Incorrect» текст, который я хочу быть с красным цветом, когда появляюсь в MsgBox
Я надеюсь, что то, что я запросил, возможно.
Лучший ответ:
Как предлагает Ральф, было бы лучше отобразить ваше сообщение в UserForm где у вас будет легкий контроль над текстовыми характеристиками.
Тем не менее, можно изменить цвет текста MessageBox, используя API цвета системы. Поскольку MessageBox – это Окно, вы можете изменить его цветовые параметры (не только текст, но и другие).
Вы должны убедиться, что вы сразу же сбросите исходные значения, иначе все ваши окна будут отображаться в измененных цветах.
В приведенном ниже коде будут автоматически обнаружены 32-битные и 64-битные системы и должны работать одинаково хорошо:
Option Explicit #If Win64 Then Private Declare PtrSafe Function GetSysColor Lib «user32» _ (ByVal nIndex As Long) As Long Private Declare PtrSafe Function SetSysColors Lib «user32» _ (ByVal nChanges As Long, lpSysColor As Long, lpColorValues As Long) As Long #Else Private Declare Function GetSysColor Lib «user32» _ (ByVal nIndex As Long) As Long Private Declare Function SetSysColors Lib «user32» _ (ByVal nChanges As Long, lpSysColor As Long, lpColorValues As Long) As Long #End If Private Const COLOR_WINDOWTEXT As Long = 8 Private Const CHANGE_INDEX As Long = 1 Public Sub RunMe() Dim defaultColour As Long ‘Store the default system colour defaultColour = GetSysColor(COLOR_WINDOWTEXT) ‘Set system colour to red SetSysColors CHANGE_INDEX, COLOR_WINDOWTEXT, vbRed MsgBox «Incorrect», , «Your result is…» ‘Set system colour to green SetSysColors CHANGE_INDEX, COLOR_WINDOWTEXT, vbGreen MsgBox «Correct», , «Your result is…» ‘Restore default value SetSysColors CHANGE_INDEX, COLOR_WINDOWTEXT, defaultColour End Sub