Problema con Combobox condicionados VBA

Soy nueva en esto y agradecería un poco de ayuda.

numero.value = ha de salir todos los números de las columnas: A, E, I, M, Q, U, Y

Range("A1").Select
                Do While ActiveCell.Value <> ""
                Numero.AddItem ActiveCell
                ActiveCell.Offset(1, 0).Select
                Loop
                Range("E1").Select
                Do While ActiveCell.Value <> ""
                Numero.AddItem ActiveCell
                ActiveCell.Offset(1, 0).Select
                Loop
                Range("I1").Select
                Do While ActiveCell.Value <> ""
                Numero.AddItem ActiveCell
                ActiveCell.Offset(1, 0).Select
                Loop
                Range("M1").Select
                Do While ActiveCell.Value <> ""
                Numero.AddItem ActiveCell
                ActiveCell.Offset(1, 0).Select
                Loop
                Range("Q1").Select
                Do While ActiveCell.Value <> ""
                Numero.AddItem ActiveCell
                ActiveCell.Offset(1, 0).Select
                Loop
                Range("U1").Select
                Do While ActiveCell.Value <> ""
                Numero.AddItem ActiveCell
                ActiveCell.Offset(1, 0).Select
                Loop
                Range("Y1").Select
                Do While ActiveCell.Value <> ""
                Numero.AddItem ActiveCell
                ActiveCell.Offset(1, 0).Select
                Loop

tipologia.value = ha de salir  solo 1 valor de cada columna ya que es el mismo en todos: B,F,J,N,R,V, Z

For i = 2 To h3.Range("B" & Rows.Count).End(xlUp).Row
        Call agregar(Tipologia, h3.Cells(i, "B"))
    Next
    For i = 2 To h3.Range("F" & Rows.Count).End(xlUp).Row
        Call agregar(Tipologia, h3.Cells(i, "F"))
    Next
    For i = 2 To h3.Range("J" & Rows.Count).End(xlUp).Row
        Call agregar(Tipologia, h3.Cells(i, "J"))
    Next
    For i = 2 To h3.Range("N" & Rows.Count).End(xlUp).Row
        Call agregar(Tipologia, h3.Cells(i, "N"))
    Next
    For i = 2 To h3.Range("R" & Rows.Count).End(xlUp).Row
        Call agregar(Tipologia, h3.Cells(i, "R"))
    Next
    For i = 2 To h3.Range("V" & Rows.Count).End(xlUp).Row
        Call agregar(Tipologia, h3.Cells(i, "V"))
    Next

 equipament.value = los datos se encuentran en las columnas: C,G,K,O,S,W,AA

Si yo selecciono el numero 1 me sale esto 1-OASF-L'HOSPITALET DE LLOBREGAT-BELLVITGE, pero si selecciono luego el 3 aparece el 103-HEL'HOSPITALET DE LLOBREGAT-SANFELIU, ha tomado de base 100 y ha sumado el valor del numero que yo quería.

¿Dónde esta el error?

1 Respuesta

Respuesta
1

Esta bastante confusa tu explicación, ¿puedes subir una imagen de tu información?, ¿Y explicar con claridad que es lo que quieres que haga la macro?

Soy nueva en esto y no se por donde empezar jejejeje.

Tenemos unos centros (equipaments.value), estos centros pueden ser: OASF, HE, LUD, CM, CGG (tipología.value) y cada centro tiene un numero en concreto (numero.value)

Como ves en la imagen esta separado por tipos, el primer grupo de 3 columnas son los datos de las OASF, el siguiente grupo los HE, ...

  1. Lo que pretendo hacer es que si introduzco el numero del equipamiento (numero.value) se rellene automáticamente tipología.value y equipament.value
  2. Si relleno tipo de equipamento (tipologia.value) que aparezca solo numero.value y equipament.value de la tipologia seleccionada
  3. Si relleno el nombre del equipamento (equipamento.value) que se rellene automáticamente numero.value y tipologia.value

A continuacion proporciono información que creo que puede ser de utilidad

  • Numero.value es un número unico para cada centro. Columnas A, E, I, M, Q, U, Y

Ej: 1(numero.value) OASF (tipologia.value) HOSPITALET DE LLOBREGAT-BELLVITGE (equipament.value)

  • Tipología.value es una caracteristica que tiene muchos centros: OASF,  HE, LUD, CM,  CGG, CC, POL. Columnas: B,F,J,N,R,V, Z
  • Equipament.value es un nombre único. Columnas: C,G,K,O,S,W,AA

El problema que veo es como tienes acomodada la informacion seccionada en varias columnas cuando lo ideo es acomodarla todo en una columna, este acomodo que tienes hace que tu programacion se muy ineficiente, asi que lo primero que hice fue hacer una macro que copia toda tu informacion a una hoja2 toda seguida y de hay cargo los 3 combobox, ahora cada que selecciones algo del combobox1 los combobox3 se alinearan con la informacion del combobox1, e igual va a pasar con los otros 3

Private Sub ComboBox1_Change()
INDICE = ComboBox1.ListIndex
If INDICE > 0 Then
    ComboBox2.Value = ComboBox2.List(INDICE)
    ComboBox3.Value = ComboBox3.List(INDICE)
End If
End Sub
Private Sub ComboBox2_Change()
INDICE = ComboBox2.ListIndex
If INDICE > 0 Then
    ComboBox1.Value = ComboBox1.List(INDICE)
    ComboBox3.Value = ComboBox3.List(INDICE)
End If
End Sub
Private Sub ComboBox3_Change()
INDICE = ComboBox3.ListIndex
If INDICE > 0 Then
    ComboBox1.Value = ComboBox1.List(INDICE)
    ComboBox2.Value = ComboBox2.List(INDICE)
End If
End Sub
Private Sub UserForm_Click()
End Sub
Private Sub UserForm_Initialize()
Set H2 = Worksheets("HOJA2")
ORDENAR_DATOS
Set DATOS = H2.Range("A1").CurrentRegion
With DATOS
    MATRIZ = .Columns(1)
    MATRIZ2 = .Columns(2)
    MATRIZ3 = .Columns(3)
    ComboBox1.List = MATRIZ
    ComboBox2.List = MATRIZ2
    ComboBox3.List = MATRIZ3
End With
End Sub
Sub ORDENAR_DATOS()
Set H1 = Worksheets("HOJA1")
Set H2 = Worksheets("HOJA2")
H2.Cells.Clear
For I = 1 To 5
    If I = 1 Then Set DATOS = H1.Range("A1").CurrentRegion
    If I > 1 Then Set DATOS = DATOS.Columns(DATOS.Columns.Count + 2).CurrentRegion
    Set TABLA = H2.Range("A1").CurrentRegion
    With TABLA
        FILAS = .CurrentRegion.Rows.Count: COL = .Columns.Count
        FILAS2 = DATOS.Rows.Count: COL2 = DATOS.Columns.Count
        If FILAS = 1 And COL = 1 Then
            .Resize(FILAS2, COL2).Value = DATOS.Value
        Else
            .Rows(FILAS + 1).Resize(FILAS2, COL).Value = DATOS.Value
        End If
    End With
Next I
Set TABLA = Nothing: Set TABLA = Nothing
End Sub

¡Gracias! James, he puesto el código el mi proyecto y me sale un error:

Subíndice fuera de intervalo.

He cambiado el nombre de las hojas y de los combobox, no se que estoy haciendo mal.

La hoja en que están los centros se llama Centros

La hoja que se ha de copiar los resultados para mostrarlos verticalmente se llama Resultados

Entiendo que copia los datos de la hoja centros y la pega en la hoja resultados en columna.

La columna A seria el combobox1 la B el 2 y la C el 3 ,no?

¿Qué estoy haciendo mal?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas