Mal funcionamiento de código para un ComboBox

Resulta que tengo un formulario que incluye entre otras cosas 2 ComboBox, y les estoy dando datos mediante el siguiente código

Private Sub UserForm_Initialize()
Dim Celda As Range
Dim Rango As String
Rango = Range("Tipo_Und").Address
For Each Celda In ActiveSheet.Range(Rango)
    If Celda.Value <> "" Then
        cbxund.AddItem Celda.Value
    End If
Next Celda
Dim Cel As Range
Dim Rng As String
Rng = Range("Tipo_Und").Address
For Each Cel In ActiveSheet.Range(Rng)
    If Cel.Value <> "" Then
        cbxunitm.AddItem Cel.Value
    End If
Next Cel
End Sub

Los datos se obtienen de una hoja llamada "Datos" y en esa hoja está la tabla "Tipo_Und", el problema es que los ComboBox solo muestran los datos cuando estoy en la hoja "Datos", si estoy en otra hoja y ejecuto el formulario el ComboBox sale en blanco, y necesito que los datos se muestren sin importar en que hoja me encuentre, podrían ayudarme a descubrir que error tengo en mi código po favor.

1 Respuesta

Respuesta
1

Juan Diego Arango un cordial saludo, viendo el codigo que tienes por ende tienes que estar posicionado en la hoja Datos, entonces solo cambia donde dice activesheet por sheets("Datos")

O lo puedes hacer de la siguiente manera, declarando en una variable el nombre de la hoja

Private Sub UserForm_Initialize()
Dim Celda As Range
Dim Rango As String
Dim NombreHoja As String

NombreHoja = "Datos"

Rango = Range("Tipo_Und").Address
For Each Celda In Sheets(NombreHoja).Range(Rango)
If Celda.Value <> "" Then
cbxund.AddItem Celda.Value
End If
Next Celda
Dim Cel As Range
Dim Rng As String
Rng = Range("Tipo_Und").Address
For Each Cel In Sheets(NombreHoja).Range(Rng)
If Cel.Value <> "" Then
cbxunitm.AddItem Cel.Value
End If
Next Cel
End Sub

Ten en cuenta que al cambiar el nombre de la hoja el código no se podrá ejecutar saltando un error, entonces seria bueno que trabajes tu código con el numero de hoja, pero si quieres que tu proyecto vaya declarado el nombre de la hoja "Datos" entonces en el evento deactivate de la hoja en si pon lo siguiente, para que no se pueda cambiar el nombre de la hoja

Private Sub Worksheet_Deactivate()
Me.Name = "Datos"
End Sub

Ahrens Buena Tarde, en caso de que quiera trabajar código con el número de la hoja en vez del nombre, solo debo nombrar la variable NombreHoja = "Hoja9" o como sería el nombramiento de esa variable?

Si la pestaña de tu hoja lleva el nombre "Datos" entonces la variable tiene que ser NombreHoja = "Datos", el nombre interno de la hoja es Hoja9, aunque en la pestaña lleve otro nombre, puedes cambiar ese nombre en las propiedades de la hoja, pero podrías causarte problemas en el manejo de tus datos, también puedes valerte del nombre interno como en el siguiente ejemplo de tu código.

'aca me refiero a la hoja "datos"
For Each Celda In Hoja9.Range(Rango)
Espero que mi breve explicación te haya servido.

Te agradezco mucho la ayuda, en verdad me ha sido muy útil y tendré muy en cuenta lo que me recomiendas acerca de los nombres de las hojas, y así evitar posibles problemas. Nuevamente quiero reiterarte mi agradecimiento. Feliz tarde

El agradecimiento es a ti por la confianza. Feliz tarde

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas