Por qué los códigos de este formulario solo extrae valor y no texto cuando se usa la columna cero (0)

Dante, tengo los códigos anexos mas abajo que son para un UserForm y su utilidad es que funciona como buscador de clientes que extrae un valor de la columna y lo vacía en una celda determinada, mi pregunta es la siguiente cuando yo extraigo información de la columna cero (0) solo puede extraer valores y no textos, pero si cambio a otra columna (ej: 1,2...)puedo extraer ambas cosas (valor y texto)

Me gustaría si es posible que me hagas el favor de ayudarme con esta inquietud.

Una cosa mas, Dante no te pude añadir como experto me ha pasado varias veces, espero que esta pregunta te pueda llegar. Saludos y gracias por todo.

Código de la macro.

Private Sub CLINOMBRE_Change()

Application.ScreenUpdating = False

Sheets("CLIENTES").Select

Range("C5").Select

LISTACLI.Clear

While ActiveCell.Value <> ""

M = InStr(1, UCase(ActiveCell.Value), UCase(CLINOMBRE.Text))

If M > 0 Then

LISTACLI.ColumnCount = 6

LISTACLI.AddItem

ActiveCell.Offset(0, -1).Select

LISTACLI.List(LISTACLI.ListCount - 1, 0) = ActiveCell.Value

ActiveCell.Offset(0, 1).Select

LISTACLI.List(LISTACLI.ListCount - 1, 1) = ActiveCell.Value

ActiveCell.Offset(0, 1).Select

LISTACLI.List(LISTACLI.ListCount - 1, 2) = ActiveCell.Value

ActiveCell.Offset(0, 1).Select

LISTACLI.List(LISTACLI.ListCount - 1, 3) = ActiveCell.Value

ActiveCell.Offset(0, 1).Select

LISTACLI.List(LISTACLI.ListCount - 1, 4) = ActiveCell.Value

ActiveCell.Offset(0, 1).Select

LISTACLI.List(LISTACLI.ListCount - 1, 5) = ActiveCell.Value

ActiveCell.Offset(0, -4).Select

End If

ActiveCell.Offset(1, 0).Select

 

Wend

 

Sheets("FACTURA").Select

Range("A1").Select

 

Application.ScreenUpdating = True

End Sub

Private Sub CLIIDENTIDAD_Change()

Application.ScreenUpdating = False

Sheets("CLIENTES").Select

Range("G5").Select

LISTACLI.Clear

While ActiveCell.Value <> ""

M = InStr(1, UCase(ActiveCell.Value), UCase(CLIIDENTIDAD.Text))

If M > 0 Then

LISTACLI.ColumnCount = 6

LISTACLI.AddItem

ActiveCell.Offset(0, -5).Select

LISTACLI.List(LISTACLI.ListCount - 1, 0) = ActiveCell.Value

ActiveCell.Offset(0, 1).Select

LISTACLI.List(LISTACLI.ListCount - 1, 1) = ActiveCell.Value

ActiveCell.Offset(0, 1).Select

LISTACLI.List(LISTACLI.ListCount - 1, 2) = ActiveCell.Value

ActiveCell.Offset(0, 1).Select

LISTACLI.List(LISTACLI.ListCount - 1, 3) = ActiveCell.Value

ActiveCell.Offset(0, 1).Select

LISTACLI.List(LISTACLI.ListCount - 1, 4) = ActiveCell.Value

ActiveCell.Offset(0, 1).Select

LISTACLI.List(LISTACLI.ListCount - 1, 5) = ActiveCell.Value

ActiveCell.Offset(0, -0).Select

End If

ActiveCell.Offset(1, 0).Select

 

Wend

 

Sheets("FACTURA").Select

Range("A1").Select

 

Application.ScreenUpdating = True

End Sub

 

Private Sub UserForm_Activate()

Application.ScreenUpdating = False

 

Sheets("CLIENTES").Select

Range("B5").Select

 

While ActiveCell.Value <> ""

ActiveCell.Offset(0, 50).Select

 

If ActiveCell.Value = 0 Then

ActiveCell.Offset(0, -50).Select

LISTACLI.ColumnCount = 6

LISTACLI.AddItem

LISTACLI.List(LISTACLI.ListCount - 1, 0) = ActiveCell.Value

ActiveCell.Offset(0, 1).Select

LISTACLI.List(LISTACLI.ListCount - 1, 1) = ActiveCell.Value

ActiveCell.Offset(0, 1).Select

LISTACLI.List(LISTACLI.ListCount - 1, 2) = ActiveCell.Value

ActiveCell.Offset(0, 1).Select

LISTACLI.List(LISTACLI.ListCount - 1, 3) = ActiveCell.Value

ActiveCell.Offset(0, 1).Select

LISTACLI.List(LISTACLI.ListCount - 1, 4) = ActiveCell.Value

ActiveCell.Offset(0, 1).Select

LISTACLI.List(LISTACLI.ListCount - 1, 5) = ActiveCell.Value

 

ActiveCell.Offset(1, -5).Select

Else

ActiveCell.Offset(1, -50).Select

End If

 

Wend

 

Sheets("FACTURA").Select

Range("A1").Select

Application.ScreenUpdating = True

End Sub

 

Private Sub LISTACLI_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

Application.ScreenUpdating = False

 

On Error GoTo ERR:

L = LISTACLI.List(LISTACLI.ListIndex, 0)

Sheets("CLIENTES").Select

Range("B5").Select

 

While ActiveCell.Value <> "" And ActiveCell.Value <> Val(L)

ActiveCell.Offset(1, 0).Select

Wend

 

If ActiveCell.Value = "" Then

Unload Me

FORMULARIOCLI.Show


Else

COD1 = ActiveCell.Value

ActiveCell.Offset(0, 0).Select

NOMB1 = ActiveCell.Value

 

Sheets("FACTURA").Select

Range("C7").Select

ActiveCell.Value = NOMB1

Unload Me

End If

ERR:

End Sub

1 respuesta

Respuesta
1

H o  l a:

Envíame tu archivo con tu formulario y me explicas cómo funciona.

Dime en dónde tienes el problema, ¿cuándo pasas la información de la celda al listbox o cuando la pasas del listbox a la celda?

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Ramon Gracesqui” y el título de esta pregunta.

Dante gracias por tu respuesta.

Ya te envié la información requerida.

 H o l a:

En este evento:

Private Sub LISTA_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

Tienes que cambiar esta línea:

While ActiveCell.Value <> "" And ActiveCell.Value <> Val(L)

Por esta línea:

While ActiveCell.Value <> "" And ActiveCell.Value <> L

Lo que estás haciendo es convertir el dato que tienes en la variable L a valor: Val(L), pero cuando la variable L tiene un texto el resultado de convertir un texto a valor es igual a 0, es por eso que no te encuentra el dato.


Ahora, si lo que quieres, cuando le das doble clic al list, es que el BOM se pase a la celda D10, el código quedaría reducido a esto:

Private Sub LISTA_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
'Por.Dante Amor
    If LISTA.ListIndex = -1 Then Exit Sub
    Sheets("FORMULARIO").Range("D10") = LISTA.List(LISTA.ListIndex)
    Unload Me
End Sub

sal u dos

Woa!!! lo que es ser un experto. Estoy impresionado por su capacidad.

Dante, muchísimas gracias por su gran ayuda, me ha servido mucho.

Le deseo mucha salud y éxitos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas