if...Then...Else
Publicado por Manolo (7 intervenciones) el 13/11/2007 10:29:17
Tengo un formulario con 2 combobox. En uno de ellos se seleccionan los clientes y en el otro, dependiendo del cliente seleccionado en el primer combobox, sale una lista de sus productos.
Ahora mismo tengo con estructuras If...Then...Else unos 3 clientes para probar el formulario, y me funciona bien.
Mi problema es que tengo una tabla con 103 clientes. ¿Es necesario que escriba If...Then..Else 103 veces, cada una con el nombre del cliente correspondiente? Si utilizará el Select Case ¿Tambien sería necesario escribirlo 103 veces?
-------------------------------------------------------------------------------------------------------------------
Private Sub UserForm_Initialize()
ComboBox1.SetFocus
ComboBox1.ColumnCount = 1
ComboBox1.RowSource = "clientes"
ComboBox1.ControlSource = "C22"
ComboBox1.BoundColumn = 1
----------------------------------------------------------------------------------------------------------------------
Private Sub ComboBox1_Click()
If ComboBox1 > 0 Then
Call LlenaTabla
End If
End Sub
----------------------------------------------------------------------------------------------------------------------
Sub LlenaTabla()
Dim datos()
filas = Worksheets("M").Range("a1").CurrentRegion.Rows.Count
columnas = Worksheets("M").Range("a1").CurrentRegion.Columns.Count
If ComboBox1 = "nombre del cliente" Then
opcion = "nombre del cliente"
Else
If ComboBox1 = "nombre del cliente" Then
opcion = "nombre del cliente"
Else
If ComboBox1 = "nombre del cliente" Then
opcion = "nombre del cliente"
Else
Exit Sub
End If
End If
End If
k = 0
For i = 2 To filas
If Worksheets("M").Cells(i, 2).Value = opcion Then
k = k + 1
ReDim Preserve datos(columnas + 1, k)
For j = 1 To columnas
datos(j, k) = Worksheets("M").Cells(i, j)
Next
datos(6, k) = Worksheets("M").Cells(i, 2).Address(False, False)
End If
Next
UserForm1.ComboBox2.ColumnCount = columnas
UserForm1.ComboBox2.List = WorksheetFunction.Transpose(datos)
UserForm1.ComboBox2.ColumnWidths = "25 pt;150 pt;25 pt;100 pt;25 pt"
End Sub
---------------------------------------------------------------------------------------------------------------------
Muchisimas gracias.
Ahora mismo tengo con estructuras If...Then...Else unos 3 clientes para probar el formulario, y me funciona bien.
Mi problema es que tengo una tabla con 103 clientes. ¿Es necesario que escriba If...Then..Else 103 veces, cada una con el nombre del cliente correspondiente? Si utilizará el Select Case ¿Tambien sería necesario escribirlo 103 veces?
-------------------------------------------------------------------------------------------------------------------
Private Sub UserForm_Initialize()
ComboBox1.SetFocus
ComboBox1.ColumnCount = 1
ComboBox1.RowSource = "clientes"
ComboBox1.ControlSource = "C22"
ComboBox1.BoundColumn = 1
----------------------------------------------------------------------------------------------------------------------
Private Sub ComboBox1_Click()
If ComboBox1 > 0 Then
Call LlenaTabla
End If
End Sub
----------------------------------------------------------------------------------------------------------------------
Sub LlenaTabla()
Dim datos()
filas = Worksheets("M").Range("a1").CurrentRegion.Rows.Count
columnas = Worksheets("M").Range("a1").CurrentRegion.Columns.Count
If ComboBox1 = "nombre del cliente" Then
opcion = "nombre del cliente"
Else
If ComboBox1 = "nombre del cliente" Then
opcion = "nombre del cliente"
Else
If ComboBox1 = "nombre del cliente" Then
opcion = "nombre del cliente"
Else
Exit Sub
End If
End If
End If
k = 0
For i = 2 To filas
If Worksheets("M").Cells(i, 2).Value = opcion Then
k = k + 1
ReDim Preserve datos(columnas + 1, k)
For j = 1 To columnas
datos(j, k) = Worksheets("M").Cells(i, j)
Next
datos(6, k) = Worksheets("M").Cells(i, 2).Address(False, False)
End If
Next
UserForm1.ComboBox2.ColumnCount = columnas
UserForm1.ComboBox2.List = WorksheetFunction.Transpose(datos)
UserForm1.ComboBox2.ColumnWidths = "25 pt;150 pt;25 pt;100 pt;25 pt"
End Sub
---------------------------------------------------------------------------------------------------------------------
Muchisimas gracias.
Valora esta pregunta


0