Error al ejecutar un modulo con un combobox

Estoy tratando de crear un modulo cuya finalidad es guardar el valor que elijo de un combobox en una variable para luego mostrarla (esto va a ser parte de algo más grande pero por ahora estoy trabado en esta parte). El código es el siguiente:
Option Compare Database
Private Sub prueba()
Dim provincia, sql As String
Dim combo1 As ComboBox
Dim rs As DAO.Recordset
Dim db As DAO.Database
Set db = CurrentDb()
sql = "SELECT * FROM letra" 'la tabla letra tiene 2 campos provincia y letra
Set rs = db.OpenRecordset(sql)
Do While rs.EOF = False
combo1.AddItem rs(0).Value  'ESTA ES LA LINEA QUE DA PROBLEMAS
rs.MoveNext
Loop
provincia = combo1.Value
MsgBox (provincia)
Rs. Close
Db. Close
End Sub
Al querer ejecutar el código me tira el error 91 "Variable de objeto o bloque with no establecido".
No se si le esta faltando algo al código, si es así

1 Respuesta

Respuesta
El objeto "Combo1" debe ser un objeto que exista, no una variable definida como tal.
Quita la definición "Dim combo1..." y crea un objeto en tu formulario que tenga ese nombre.
Creo que funcionará.
Gracias Santiago, mira lo quedo así pero me sigue tirando el error, seguramente sigo haciendo algo mal, ¿podrías decirme bein en detalle como tendría que quedar el código?. Otra cosa esto no es un formulario, es un modulo.
Muchas Gracias!
Option Compare Database
Private Sub prueba()
Dim provincia, sql As String
Dim combo1 As Object
Dim rs As DAO.Recordset
Dim db As DAO.Database
Set db = CurrentDb()
sql = "SELECT * FROM letra"
Set rs = db.OpenRecordset(sql)
Do While rs.EOF = False
combo1.AddItem rs(0).Value
rs.MoveNext
Loop
'combo1.ListIndex = 0
provincia = combo1.Value
MsgBox (provincia)
rs.Close
db.Close
End Sub
No sé como vas a leer el valor de un combo dentro de un módulo. Que yo sepa sólo lo puedes leer a través de un formulario y, si acaso, después se lo pasas al módulo, pero el combo estará en un formulario.
Como mucho podrías pasar el combo como parámetro a tu procedimiento y, cada vez que cambie el valor dentro del formulario, hacer que llame al módulo con:
El encabezado del módulo sería
Sub prueba(combo1 as comboBox)
Además, si pones el procedimiento como privado (private), no podrás llamarlo desde otros sitios.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas