Excel - Crear dependencia entre combobox

 
Vista:

Crear dependencia entre combobox

Publicado por Claudio C. (43 intervenciones) el 30/06/2007 16:54:12
Hola, buenos dias desde México.

Tengo la siguiente cuestion.

En un userform tengo 2 textbox (txtFechaMov y txtImporte) y 3 combobox (cmbCatego, cmbDescrip y cmbRefe).

Bien, quiero que los items de cmbRefe dependan del valor de cmbDescrip, y así mismo, los items de cmbDescrip dependan del valor de cmbCatego. Espero haberme explicado.
Le he estado pensando pero no tengo nada claro hasta el momento.
Debe ser un formulario dinamico, de tal forma que cuando seleccione un valor en cmbCatego, automáticamente se actualicen los valores disponibles para cmbDescrip, y cuando escoja un valor para este ultimo, se actualicen los valores de cmbRefe. Se me ha ocurrido que podria conseguirlo con el evento afterupdate.

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Crear dependencia entre combobox

Publicado por JuanC (792 intervenciones) el 30/06/2007 17:40:35
Private Sub cmbCatego_Change()
cmbRefe.Clear
cmbDescrip.Clear
Select Case cmbCatego.ListIndex
Case 0
cmbRefe.AddItem "a"
cmbDescrip.AddItem "A"
Case 1
cmbRefe.AddItem "b"
cmbDescrip.AddItem "B"
'Case n

Case Else

End Select
cmbRefe.ListIndex = 0
cmbDescrip.ListIndex = 0
End Sub

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Crear dependencia entre combobox

Publicado por Claudio C. (43 intervenciones) el 03/07/2007 23:06:33
Muchas gracias Juan por tu ayuda.

Tus comentarios me sirvieron de base para conseguir lo que quería.
El código que usé finalmente es el siguiente:

Private Sub cmbCatego_AfterUpdate()
Dim CatSel$, RanDescrip$
CatSel = Me.cmbCatego.Value
ActiveWorkbook.Sheets("Help").Visible = True
If Me.cmbCatego.Value = "Saldo inicial" Then
With frmMvtos
.cmbDescrip.Value = "Saldo inicial"
.cmbRefe.Value = ""
.cmbRefe.Enabled = False
.cmdAgreRefe.Enabled = False
.txtImporte.Enabled = True
.txtImporte.BackColor = RGB(255, 255, 201)
End With
Exit Sub
Else
ActiveWorkbook.Sheets("Help").Activate
Application.Goto reference:=CatSel
RanDescrip = Selection.Address
Me.cmbDescrip.RowSource = RanDescrip
ActiveWorkbook.Sheets("Help").Visible = False
Exit Sub
End If
End Sub

Private Sub cmbDescrip_AfterUpdate()
Dim DescSel$, RanRefe$
DescSel = Me.cmbDescrip.Value
If DescSel = "Acuario" Or DescSel = "Celular" Or DescSel = "Varios" Or DescSel = "Honorarios" Or _
DescSel = "Ordinarios" Or DescSel = "Extras" Or DescSel = "Otorgado" Or DescSel = "Recibido" Or _
DescSel = "Recuperado" Or DescSel = "Pagado" Then
ActiveWorkbook.Sheets("Help").Visible = True
ActiveWorkbook.Sheets("Help").Activate
Application.Goto reference:=DescSel
RanRefe = Selection.Address
Me.cmbRefe.RowSource = RanRefe
ActiveWorkbook.Sheets("Help").Visible = False
With Me.txtImporte
.BackColor = RGB(255, 255, 201)
.Enabled = True
End With
Exit Sub
Else
With Me.cmbRefe
.Value = ""
.BackColor = RGB(240, 242, 239)
.Enabled = False
End With
Me.cmdAgreRefe.Enabled = False
With Me.txtImporte
.BackColor = RGB(255, 255, 201)
.Enabled = True
End With
Exit Sub
End If
End Sub

Bueno, es parte del código.

Una vez más, muchas gracias por tu oportuna atención.

Saludos

Claudio C.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar