Makeshift Cue Баннеры

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

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

Private Sub UserForm_Initialize()

        Me.txbShipToName1.Text = "name"
        Me.txbShipToName1.Font.Italic = True
        Me.txbShipToName1.ForeColor = &H80000006

End Sub

Private Sub txbShipToName1_Enter()

        If Me.ActiveControl Is Me.txbShipToName1 And Me.txbShipToName1.Text = "name" Then
            txbShipToName1.Font.Italic = False
            txbShipToName1.ForeColor = &H80000008
            txbShipToName1.Text = ""
        End If

End Sub

Private Sub txbShipToName1_Leave()

        If Me.ActiveControl Is Not txbShipToName1 And Me.txbShipToName1.Text = "" Then
            txbShipToName1.Font.Italic = True
            txbShipToName1.ForeColor = &H80000006
            txbShipToName1.Text = LCase(txbShipToName1.Text)
            txbShipToName1.Text = "name"
        End If

End Sub

Private Sub txbShipToName1_Change()

        If Me.ActiveControl Is Me.txbShipToName1 And Me.txbShipToName1 <> "name" Then
            txbShipToName1.Text = UCase(txbShipToName1.Text)
       End If

End Sub

1 ответ

Решение

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

Private Sub UserForm_Initialize()
'Populates cue banners
    Me.txbShipToName1.Text = "Name"
    Me.txbShipToName1.Font.Italic = True
    Me.txbShipToName1.ForeColor = &H80000011
End Sub

Private Sub txbShipToName1_Enter()
'Removes cue banner upon entering textbox
    If Me.txbShipToName1.Text = "Name" Then
        txbShipToName1.Font.Italic = False
        txbShipToName1.ForeColor = &H80000012
        txbShipToName1.Text = ""
    End If

End Sub 'txbShipToName1_Enter()
Private Sub txbShipToName1_Change()

'Converts textbox to uppercase
    If Me.txbShipToName1.Text <> "Name" Then
        txbShipToName1.Text = UCase(txbShipToName1.Text)
    End If
End Sub 'txbShipToName1_Change()

Private Sub txbShipToName1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Replaces cue banner upon exiting textbox
    If Me.txbShipToName1.Text = "" Then
        txbShipToName1.Font.Italic = True
        txbShipToName1.ForeColor = &H80000011
        txbShipToName1.Text = "Name"
    End If
End Sub 'txbShipToName1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Другие вопросы по тегам