Como mudar a cor de um caixa de texto ou caixa de combinação a depender do valor?

Por exemplo: Se o valor da caixa de texto ou da caixa de combinação for “OK”, a cor fica verde, se for “NÃO”, a cor fica vermelho.
Igual a formação condicional,mas em vez de ser em uma célula é numa caixa de texto ou caixa de combinação.
Alguém consegue meajudar?

A Caixa de Texto ou Combinação estará:
a) diretamente na planilha, ou seja, ancorada em alguma célula, p. ex. ? ou,
b) em uma Caixa de Diálogo, tipo um formulário?
.
Sendo a primeira opção, a resposta dada por @James_Zimmerman provavelmente te atenderá. Sendo em uma caixa de diálogo, o caminho é um pouco diferente.

Obrigado por responder, Felipe. Mas a resposta do James me ajudou.

1 Like

I created a macro named “conditionalColor” and activated it on the Event “when losing focus” of the text box. When you exit the text box the background color will change to green if you typed “OK” and red for anything else.

Criei uma macro chamada “ConditionalColor” e ativei-a no Evento “quando perdi o foco” da caixa de texto. Quando sai da caixa de texto, a cor de fundo mudará para verde se escrever “OK” e vermelho para qualquer outra coisa.

Sub conditionalColor
On Error Goto ErrHandler
    Dim oForm As Object
    Dim oMyControl As Object
    Dim sControlContent As String
    
	REM I have named my form "MainForm" so set the oForm variable to represent my MainForm
	REM Eu nomeei o meu formulário "MainForm" então definir a variável oForm para representar o meu MainForm
	oForm = ThisComponent.Drawpage.Forms.getByName("MainForm")
	
	REM I named the text box "txtOKcolor" so set oMyControl to represent that text box
	REM Nomeei a caixa de texto "txtOKcolor" por isso desemcotuo oMyControl para representar aquela caixa de texto
	oMyControl = oForm.getByName("txtOKcolor")
	
	REM Check the "Text" content in the Control: see if it says "OK"
	REM Verifique o conteúdo "Texto" no Controlo: veja se diz "OK"
	sControlContent = oMyControl.Text
	
	If sControlContent = "OK" then
		REM set Green background
		REM definir fundo verde
		oMyControl.BackgroundColor = RGB(232,242,161)
	Else
		REM set Red background
		REM conjunto de fundo vermelho
		oMyControl.BackgroundColor = RGB(255,166,166)
	End If
	

 ExitSub:
 	Exit Sub
 	
 ErrHandler:
	If MsgBox ("Error " & Err & " at line " & Erl & " - " & Error$ & Chr$(13) & "Continue?", MB_ICONSTOP + MB_YESNO , "Error in Sub conditionalColor") = IDYES Then
		Resume Next
	Else
		Resume ExitSub
	End IF
    
End Sub

Deu certo. Muito obrigado.