Macro combobox

Hola:
Me gustaría que me ayudaran sobre esta macro,
Encontré en este foro una macro para combobox que busca en la columna hasta que encuentra el espacio en blanco y ya no continua. He realizado un formulario que en la siguiente columna, depende de lo que haya en el primer combobox, se rellenan unos datos en la siguiente, y utilizo la misma macro para que el segundo combobox se rellene, el caso es que cuando saca algún valor 0 también lo pone en el combobox 2 y no quiero que salga, solo quiero que salgan los valores superiores a 0 y no se como se hace.
Les pongo mi macro para ver si me pueden ayudar. Espero haberme explicado porque es un poco difícil de decir.
Gracias por adelantado
Private Sub ComboBox1_Change()
Range("CI18").Select
ActiveCell.FormulaR1C1 = ComboBox1
Range("CI34").Select
ActiveCell.FormulaR1C1 = ComboBox1
End Sub
Private Sub ComboBox2_Change()
Range("CJ34").Select
ActiveCell.FormulaR1C1 = ComboBox1
End Sub
Private Sub UserForm_Initialize()
Dim x As Variant
Dim y As Variant
Sheets("presupuesto").Select
Range("CI2").Select
x = ActiveCell.Address
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Activate
Loop
y = ActiveCell.Offset(-1, 0).Address
ComboBox1.RowSource = x & ":" & y
Sheets("presupuesto").Select
Range("CJ18").Select
x = ActiveCell.Address
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Activate
Loop
y = ActiveCell.Offset(-1, 0).Address
ComboBox2.RowSource = x & ":" & y
End Sub

1 respuesta

Respuesta
1
He retocado un poco tu código. Prueba con este a ver si te funciona:
Option Explicit
Private Sub ComboBox1_Change()
    Range("CI18").FormulaR1C1 = ComboBox1
    Range("CI34").FormulaR1C1 = ComboBox1
End Sub
Private Sub ComboBox2_Change()
    Range("CJ34").FormulaR1C1 = ComboBox1
End Sub
Private Sub UserForm_Initialize()
    Const nColCombo1 = 87 ' La CI es la columna número 87
    Const nColCombo2 = nColCombo1 + 1 ' La CJ es la siguiente
    Dim i As Integer
    Sheets("presupuesto").Select
    i = 2 ' La primera fila a buscar para el combo 1
    Do While Sheets("presupuesto").Cells(i, nColCombo1) <> ""
        i = i + 1
    Loop
    ComboBox1.RowSource = Sheets("presupuesto").Cells(2, nColCombo1).Address & ":" & _
                          Sheets("presupuesto").Cells(i - 1, nColCombo1).Address
    i = 18 ' La primera fila a buscar para el combo 2
    ComboBox2.Clear
    Do While Sheets("presupuesto").Cells(i, nColCombo2) <> ""
        If Sheets("presupuesto").Cells(i, nColCombo2) <> 0 Then
            ComboBox2.AddItem Sheets("presupuesto").Cells(i, nColCombo2)
        End If
        i = i + 1
    Loop
End Sub
Hola,
Gracias por tu rápida respuesta,
Ahora me da un error en la ejecución de la macro
Se ha produciodo el error'-21474467259(800004005)' en tiempo de ejecución
Error no especificado.
Me puedes ayudar,
gracias
¿Te da el error en el código que te he puesto? A mi me funcionaba correctamente.
Prueba a poner un 'punto de interrupción' al inicio del código (línea Sheets("presupuesto"). Select), y ejecutalo paso a paso con F8 para ver en qué línea te está dando el error.
A lo mejor te da una pista saber donde casca.
Si quieres mándame la hoja de cálculo comprimida en "zip" y echo un vistazo. Mi correo es: [email protected]
Si me la mandas al correo, enviala comprimida en zip, para que ocupe poco, e indicame tu usuario de aquí para saber de dónde viene.
Ya te mande el exel, espero me puedas ayudar ya que llevo bastante tiempo dándole vueltas y no soy capaz de sacarlo
Gracias
Te acabo de enviar la hoja de cálculo.
El problema estaba en que habías puesto que la página se llamaba 'presupuesto' y que los datos estaban en las columnas CI y CJ.
El nombre de la página lo toma de la página activa cuando abras el formulario y las columnas donde están los datos de los combos las puedes definir en las constantes del código (columna A=1, B=2, Z=26, AB=27, etc...).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas