Error en el método Range de objeto _Global

Tengo el siguiente codigo:

Private Sub ComboBox2_Click()
Dim ApNom As String
Dim idBusca As String
Dim fila As Integer
Application.ScreenUpdating = False
Sheets("DATOS").Select
fila = 0
ApNom = ComboBox2
Do While idBusca <> ApNom
     fila = fila + 1
     idBusca = Range("A" & fila).Value
     If idBusca = Empty Then
        Sheets("DATOS").Select
        Exit Do
     End If
Loop
ComboBox2 = Range("C" & fila).Value
TxtRif = Range("D" & fila).Value
TxtDireccion = Range("E" & fila).Value
TxtAlicuota = Range("F" & fila).Value
ComboBox2. SetFocus
MENU. Activate
End Sub

y me esta dando error en la linea: ComboBox2 = Range("C" & fila).Value

Este codigo lo utilizo para completar automaticamente los 3 TextBox segun la opcion del ComboBox2

He modificado varias veces el codigo pero no consigo el error

2 respuestas

Respuesta
2

Estás iniciando la variable fila con 0, cuando el valor idBusca es igual ApNom entonces no entra al loop, luego asignas Range("C" & fila).Value al combobox, pero como fila vale 0, entonces te genera el error.

Puedes cambiar fila = 0 por fila = 1, e incrementar el contador después de la pregunta, por ejemplo:

Private Sub ComboBox2_Click()
    Dim ApNom As String
    Dim idBusca As String
    Dim fila As Integer
    Application.ScreenUpdating = False
    Sheets("DATOS").Select
    fila = 1
    ApNom = ComboBox2
    Do While idBusca <> ApNom
         idBusca = Range("A" & fila).Value
         If idBusca = Empty Then
            Sheets("DATOS").Select
            Exit Do
         End If
         fila = fila + 1
    Loop
    ComboBox2 = Range("C" & fila).Value
    TxtRif = Range("D" & fila).Value
    TxtDireccion = Range("E" & fila).Value
    TxtAlicuota = Range("F" & fila).Value
    ComboBox2.SetFocus
    Menu.Activate
End Sub

Aunque, si vas a hacer una búsqueda, yo prefiero utilizar el método find, por ejemplo:

Private Sub ComboBox2_Click()
'Por.Dante Amor
    Set h = Sheets("DATOS")
    Set b = h.Columns("A").Find(ComboBox2, lookat:=xlWhole)
    If Not b Is Nothing Then
        ComboBox2 = h.Range("C" & b.Row)
        TxtRif = h.Range("D" & b.Row)
        TxtDireccion = h.Range("E" & b.Row)
        TxtAlicuota = h.Range("F" & b.Row)
    Else
        MsgBox "El dato seleccionado en el combo no existe"
    End If
End Sub

De esta forma no es necesario cambiarse a la hoja "DATOS".

También revisa, si lo que quieres asignar de la columna "C" lo quieres poner en el mimo combobox2

ComboBox2 = h.Range("C" & b.Row)


Respuesta

El error se produce por que estas asignandole un valor al combobox que no tiene.

Me parece que es redundante esa linea, si ya lo seleccionaste, no me queda claro por que nuevamente le asignas un valor. Pensaría que esa linea te sobra.

Otro comentario, el evento que estas manejando es click. Es mejor que uses el evento change:  Private Sub ComboBox1_Change()

Si quieres enviame un ejemplo de tu archivo y podria ayudarte mas facilmente: [email protected]

¡Gracias! Víctor por responder, hice los cambio que me dices por me da el mismo error

Private Sub ComboBox2_Change()Dim ApNom As StringDim idBusca As StringDim fila As IntegerApplication.ScreenUpdating = FalseSheets("DATOS").Selectfila = 0ApNom = ComboBox2Do While idBusca <> ApNom     fila = fila + 1     idBusca = Range("A" & fila).Value     If idBusca = Empty Then        Sheets("DATOS").Select        Exit Do     End IfLoopTxtRif = Range("D" & fila).ValueTxtDireccion = Range("E" & fila).ValueTxtAlicuota = Range("F" & fila).ValueComboBox2.SetFocusMENU.ActivateEnd Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas