Error al Enlazar Un ComboBox con TextBox

Deseo Combinar un combobox con un textbox, es decir que al escoger una columna de datos en el combobox me coloque lo datos de otra columna Columna B es decir tengo Código y Nombre en las columnas A y B respectivamente selecciono un código con el Combobox y deberá seleccionar el nombre a el textbox tengo este proceso pero me emite un error donde esta marcado el asterisco:

Private Sub CmbCodigo_Change()
Dim Código As String
Dim IdBuscar As String
Dim Fila As Integer
Application.ScreenUpdating = False
Sheets("Hoja1").Select
Fila = 0
Marca = CmdCodigo
Do While IdBusca <> Código
Fila = Fila + 1
IdBusca = Range("A" & Fila).Value
If IdBusca = Empty Then
Sheets("Hoja1").Select
MsgBox "No se Encontraron Datos"
Exit Do
End If
Loop
TextBox1 = Range("B" & Fila).Value ACA ME DEA ERROR
CmbCodigo.SetFocus
Hoja1.Activate
End Sub

1 Respuesta

Respuesta
1

La reviso y te comento las fallas. No finalices aún.

Vamos a analizar cada línea para que veas las fallas:

Private Sub CmbCodigo_Change()
Dim Código As String
Dim IdBuscar As String 'debiera ser idBusca ya que así se la menciona luego
Dim Fila As Integer
Application.ScreenUpdating = False
Sheets("Hoja1").Select
Fila = 0
Marca = CmdCodigo
Do While IdBusca <> Código 'en este pto idBusca es = Código, ambos están vacíos y por lo tanto Fila = 0. Luego intentas enviar al TExtbox el valor de B0

Fila = Fila + 1
IdBusca = Range("A" & Fila).Value
If IdBusca = Empty Then
Sheets("Hoja1").Select
MsgBox "No se Encontraron Datos"
Exit Do
End If
Loop
TextBox1 = Range("B" & Fila).Value ACA ME DEA ERROR
CmbCodigo.SetFocus
Hoja1.Activate
End Sub

Así quedaría mejor:

Sub CmbCodigo_Change()    '* reemplazar por _Click()
Dim IdBusca As String
Dim Fila As Integer
Application.ScreenUpdating = False
'si el combo está vacío se cancela el proceso
If combobox1.Value = "" Then Exit Sub
Sheets("Hoja1").Select
'se busca el valor seleccionado en el combo en la col A de la hoja1
Set busco = ActiveSheet.Range("A:A").Find(CmdCodigo, LookIn:=xlValues, lookat:=xlWhole)
'si no se encontró el dato finaliza el proceso
If busco Is Nothing Then
 MsgBox "No se Encontraron Datos"
Else
 'encontró el dato, devuelve el valor de col B
 Fila = busco.Row
 TextBox1 = Range("B" & Fila).Value
End If
CmbCodigo.SetFocus
'sigo estando en Hoja1
 'Hoja1.Activate
End Sub

Esto funciona correctamente si vas a seleccionar un elemento del combo (se ejecuta el evento Change). Pero fallará si vas a escribir en el combo el dato a buscar.

Por eso es mejor utilizar:

Private Sub CmbCodigo_Click()


Probala y comentame. Si queda resuelta, no olvides finalizar la consulta.


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas