Guardar valor distinto al mostrado en el combobox

Es posible guardar un valor distinto al seleccionado (una abreviación del campo seleccionado).

Me explico, tengo un combobox con los valores que muestro a continuación, pero me gustaría que al guardar en la hoja de registro se guardaran como su abreviación:

NO APLICA = ""

CASTLES 2G = "C"

CASTLES 3G = "K"

VX510 = "V"

VX520 = "W"

VX520 3G = "B"

OPTIMUM = "O"

THALES = "T"

1 respuesta

Respuesta
1

H o l a:

Esta sería una opción.

Primero, pon tus valores y abreviaciones en una hoja, por ejemplo "hoja1"


Segundo, carga los valores y abreviaciones en el combo de la siguiente manera:

Private Sub UserForm_Activate()
'Por.Dante Amor
    ComboBox1.ColumnCount = 1
    ComboBox1.RowSource = "Hoja1!A2:B9"
End Sub

Cuando ejecutes el formulario solamente verás los datos de la columna A en el combo:


Selecciona un valor del combo y con el botón, pasarás la abreviatura a la hoja de esta forma:

Private Sub CommandButton1_Click()
'Por.Dante Amor
    Set h2 = Sheets("Hoja2")
    u = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
    h2.Range("A" & u) = ComboBox1.List(ComboBox1.ListIndex, 1)
End Sub

Lo que hace el código es tomar el dato de la columna 2 del combobox1 y pasarlo a la ceda.


Dante, al parecer he realizado algo mal, porque me da error, dejo el código a ver si puedes ayudarme. 

Public Sub btn_guardar_Click()
Set h = Sheets("REGISTRO")
h.Cells(2, 1).EntireRow.Insert
Set h2 = Sheets("DATOS")
u = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
h2.Range("A" & u) = combo_Entrantes.List(combo_Entrantes.ListIndex, 1)
u1 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
h2.Range("A" & u1) = combo_Salientes.List(combo_Salientes.ListIndex, 1)
u2 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
h2.Range("A" & u2) = combo_sim1Entrante.List(combo_sim1Entrante.ListIndex, 1)
u3 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
h2.Range("A" & u3) = ccombo_sim1Saliente.List(combo_sim1Saliente.ListIndex, 1)
u4 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
h2.Range("A" & u4) = combo_sim2Entrante.List(combo_sim2Entrante.ListIndex, 1)
u5 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
h2.Range("A" & u5) = combo_sim2Saliente.List(combo_sim2Saliente.ListIndex, 1)
h.Cells(2, 1) = txtbox_pos
h.Cells(2, 2) = CDate(lbl_Fecha.Caption)
h.Cells(2, 3) = "IM" + txtbox_IM
h.Cells(2, 16) = txtbox_detalle
'h.Cells(2, 4) = combo_Entrantes
h.Cells(2, 5) = txtbox_serieEntrante
'h.Cells(2, 6) = combo_Salientes
h.Cells(2, 7) = txtbox_serieSaliente
'h.Cells(2, 8) = combo_sim1Entrante
h.Cells(2, 9) = txtbox_serieSimEntrante
'h.Cells(2, 10) = combo_sim1Saliente
h.Cells(2, 11) = txtbox_serieSim1Saliente
'h.Cells(2, 12) = combo_sim2Entrante
h.Cells(2, 13) = txtbox_serieSim2Entrante
'h.Cells(2, 14) = combo_sim2Saliente
h.Cells(2, 15) = txtbox_serieSim2Saliente
mandar_Correo
campos_predeterminados
txtbox_pos.SetFocus

Pero no entiendo en cuál hoja quieres guardar la información y cuál hoja tienes los valores y las abreviaturas.

¿En dónde quieres guardar la información? ¿En la fila 2 o en la última fila?

Dante no se como subir el archivo aquí, lo envié a tu correo con el asunto Felipe Castillo - Guardar valor distinto al mostrado en el combobox

Saludos

Así quedaría el código:

Public Sub btn_guardar_Click()
    Set h = Sheets("REGISTRO")
    Set h2 = Sheets("DATOS")
    u = 2
    Do While h.Cells(u, "A") <> ""
        u = u + 1
    Loop
    ab1 = combo_Entrantes.List(combo_Entrantes.ListIndex, 1)
    ab2 = combo_Salientes.List(combo_Salientes.ListIndex, 1)
    If ab2 <> "" Then ab2 = "x" & ab2
    h.Cells(u, "A") = txtbox_pos
    h.Cells(u, "B") = ab1 & ab2
    h.Cells(u, "C") = Date
    h.Cells(u, "D") = Time
    '
    'mandar_Correo
    'campos_predeterminados
    'txtbox_pos.SetFocus
End Sub

H o l a:

Te anexo una actualización

Public Sub btn_guardar_Click()
    Set h = Sheets("REGISTRO")
    Set h2 = Sheets("DATOS")
    u = 2
    Do While h.Cells(u, "A") <> ""
        u = u + 1
    Loop
    ab1 = combo_Entrantes.List(combo_Entrantes.ListIndex, 1)
    ab2 = combo_Salientes.List(combo_Salientes.ListIndex, 1)
    le1 = " " & combo_sim1Entrante.List(combo_sim1Entrante.ListIndex, 1)
    le2 = " " & combo_sim2Entrante.List(combo_sim2Entrante.ListIndex, 1)
    '
    If ab2 <> "" Then ab2 = "x" & ab2
    h.Cells(u, "A") = txtbox_pos
    h.Cells(u, "B") = ab1 & ab2 & le1 & le2
    h.Cells(u, "C") = Date
    h.Cells(u, "D") = Time
    '
    'mandar_Correo
    'campos_predeterminados
    'txtbox_pos.SetFocus
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas