Colorear celda dependiendo de contenido de Textbox

Cuento con el siguiente código, lo que necesito es que al ingresar la palabra "CANCELADO" en el textbox9, la celda correspondiente a la fila 1 se coloree de rojo, caso contrario el textbox tenga otra palabra ingresada se coloree anaranjado

Private Sub CommandButton1_Click()
   Dim NombreHoja As String
    Dim HojaDestino As Range
    Dim NuevaFila As Integer
    NombreHoja = Me.ComboBox2.Value
    Set HojaDestino = ThisWorkbook.Sheets(NombreHoja).Range("A1").CurrentRegion
    NuevaFila = HojaDestino.Rows.Count + 1
If TextBox1 = "" Or TextBox2 = "" Or TextBox3 = "" Or TextBox5 = "" Or ComboBox4 = "" Or ComboBox5 = "" Then
    MsgBox "Escriba todos los datos"
Else
    Select Case ComboBox4.ListIndex
        Case 0: col = "J" ' soles
        Case 1: col = "K" ' dolares
    End Select
   With ThisWorkbook.Sheets(NombreHoja)
    .Cells(NuevaFila, 1).Value = TextBox1
    .Cells(NuevaFila, 2).Value = CDate(TextBox2)
    .Cells(NuevaFila, 3).Value = TextBox9
    .Cells(NuevaFila, 4).Value = TextBox6
    .Cells(NuevaFila, 5).Value = ComboBox2
    .Cells(NuevaFila, 6).Value = TextBox3
    .Cells(NuevaFila, 7).Value = ComboBox3
    .Cells(NuevaFila, 8).Value = TextBox4
    .Cells(NuevaFila, 9).Value = ComboBox4
    If col = "J" Then
        .Cells(NuevaFila, col).NumberFormat = "[$S/-es-PE]* #,##0.00"
    Else
        .Cells(NuevaFila, col).NumberFormat = "[$$-en-US]* #,##0.00"
    End If
    '
    .Cells(NuevaFila, col) = Val(TextBox5.Text) ' soles o dólares
    .Cells(NuevaFila, 12).Value = ComboBox5
  End With
        Sheets("FORMULARIO").Select
MsgBox "Se ha escrito correctamente su registro"
response = MsgBox("¿Desea añadir otro registro?", _
vbYesNo)
If response = vbYes Then
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox6.Text = ""
TextBox9.Text = ""
ComboBox2.Text = ""
ComboBox3.Text = ""
ComboBox4.Text = ""
ComboBox5.Text = ""
TextBox1.SetFocus
Else
Unload Me
UserForm1.Show
End If
End If
End Sub

2 Respuestas

Respuesta
1

Esto te puede servir

https://youtu.be/Jw8fmqTyUDk

Respuesta
1

Después de esta línea

.Cells(NuevaFila, 3).Value = textbox9

Pon estas líneas:

If UCase(textbox9) = "CANCELADO" Then
  .Cells(NuevaFila, 3).Interior.ColorIndex = 3
Else
  .Cells(NuevaFila, 3).Interior.ColorIndex = 45
End If

Pero en este caso quisiera que se coloree la primera celda, seria Nueva Fila, 1 para colorear la fila que necesito amigo ??

Entonces cambia NuevaFila por 1 y prueba y me comentas.

Y si lo aplico en el siguiente código como seria

Private Sub CommandButton2_Click()
Set h = Sheets(ComboBox1.Value)
    Set b = h.Range("A:A").Find(ComboBox2.Text, lookat:=xlWhole)
    If Not b Is Nothing Then
        Fila = b.Row
        '
        h.Cells(Fila, "B") = TextBox1
        h.Cells(Fila, "C") = TextBox2
        h.Cells(Fila, "G") = TextBox3
        h.Cells(Fila, "M") = TextBox4
        '
        h.Cells(Fila, "N") = TextBox5 'guarda la fecha
        'vas agregando el resto
        End If
    Sheets("FORMULARIO").Select
     Call LimpiarTextBoxes
     Call limpiarComboBoxex
MsgBox ("El registro se guardó con éxito"), vbInformation, "AVISO"
ComboBox1.SetFocus
End Sub

Te paso el ejemplo para el textbox5, ya que no existe el textbox9

Private Sub CommandButton2_Click()
Set h = Sheets(ComboBox1.Value)
    Set b = h.Range("A:A").Find(ComboBox2.Text, lookat:=xlWhole)
    If Not b Is Nothing Then
        Fila = b.Row
        '
        h.Cells(Fila, "B") = TextBox1
        h.Cells(Fila, "C") = TextBox2
        h.Cells(Fila, "G") = TextBox3
        h.Cells(Fila, "M") = TextBox4
        '
        h.Cells(Fila, "N") = textbox5 'guarda la fecha
        '
        If UCase(textbox5) = "CANCELADO" Then
          h.Cells(1, "N").EntireRow.Interior.ColorIndex = 3
        Else
          h.Cells(1, "N").EntireRow.Interior.ColorIndex = 45
        End If
        '
        'vas agregando el resto
        End If
    Sheets("FORMULARIO").Select
     Call LimpiarTextBoxes
     Call limpiarComboBoxex
MsgBox ("El registro se guardó con éxito"), vbInformation, "AVISO"
ComboBox1.SetFocus
End Sub

Pero en este caso el textbox2 sera la condición

Disculpa una ultima pregunta, quisiera que todos los datos me los copian a la celda en alineación centrada

Tu pregunta original es con el textbox9

S que al ingresar la palabra "CANCELADO" en el textbox9

-----------------------------------------------------------------

Pero en este caso el textbox2 sera la condición

Yo puedo adivinar en cuál textbox quieres, solamente te puse un ejemplo.

Si lo quieres en otro textbox, solamente sigue el ejemplo

        h.Cells(Fila, "C") = TextBox2
        If UCase(textbox2) = "CANCELADO" Then
          h.Cells(1, "C").EntireRow.Interior.ColorIndex = 3
        Else
          h.Cells(1, "C").EntireRow.Interior.ColorIndex = 45
        End If


Quisiera que todos los datos me los copian a la celda en alineación centrada

Simplemente selecciona el formato en la hoja en las columnas y listo.

Estimado al usar el siguiente código me resalta todo el encabezado 

Private Sub CommandButton2_Click()
Set h = Sheets(ComboBox1.Value)
    Set b = h.Range("A:A").Find(ComboBox2.Text, lookat:=xlWhole)
    If Not b Is Nothing Then
        Fila = b.Row
        '
        h.Cells(Fila, "B") = TextBox1
        h.Cells(Fila, "C") = TextBox2
        If UCase(TextBox2) = "CANCELADO" Then
          h.Cells(1, "A").EntireRow.Interior.ColorIndex = 3
        Else
          h.Cells(1, "A").EntireRow.Interior.ColorIndex = 44
        End If
        h.Cells(Fila, "G") = TextBox3
        h.Cells(Fila, "M") = TextBox4
        '
        h.Cells(Fila, "N") = TextBox5 'guarda la fecha
        'vas agregando el resto
        End If
    Sheets("FORMULARIO").Select
     Call LimpiarTextBoxes
     Call limpiarComboBoxex
MsgBox ("El registro se guardó con éxito"), vbInformation, "AVISO"
ComboBox1.SetFocus
End Sub

Sigue el primer ejemplo que puse.

Prueba así:

        h.Cells(Fila, "C") = TextBox2
        If UCase(TextBox2) = "CANCELADO" Then
          h.Cells(1, "A").Interior.ColorIndex = 3
        Else
          h.Cells(1, "A").Interior.ColorIndex = 44
        End If

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas