Discussion:
COMBOBOX DE 2 COLUMNAS
(demasiado antiguo para responder)
Gleiser Camizán Lozano
2008-04-21 15:23:34 UTC
Permalink
Buenas muchachos, deseo que alguien me ayude con lo siguiente, a
continuaciòn describo la situación:

1º Tengo una hoja, donde se lista una serie de datos que son
actualizables, me refiero a una lista de clientes especificamente que
va creciendo según el registro de nuevo clientes.

A B
C
1 codtipoclientes nombre
2 1 COMER./DISTR. ELECTRICA EL
3 2 MINERIA MI
4 3 CONSTRUCCIÓN CO
5 4 ENERGETICO EN
6 5 CAP/TRAT DISTRIB DE AGUAS AG
7 6 ESTATAL ES
7 7 OTROS OT


Estos luego son cargados dinamicamente, via codigo a un combo box
(ubicado en un formulario) mediante el siguiente procedimiento:

Public Sub Cargar_CB(ByRef NombreCB As Object, ByVal hoja As String,
ByVal CasillaI As String)

'NombreCB es el combo box al cual se va cargar la lista
'hoja, es donde se encuentra la lista de clientes
'CasillaI es donde se inicia la lista de datos

Worksheets(hoja).Activate
Range(CasillaI).Select

Do While ActiveCell <> Empty

ActiveCell.Offset(0, 0).Select

With NombreCB
.AddItem ActiveCell.Value
End With

ActiveCell.Offset(1, 0).Select
Loop


End Sub

Hasta ahi todo bien el código, el cual lo llamaba desde el formulario
de la siguiente manera.

Cargar_CB Me.cmbTipoCliente, "tbclientes", "b2"

2º Ahora cambio la propiedad ColumnCount=2 del combobox, con el objeto
de que se cargue tanto la lista encabezada por B1 y la lista
encabezada por C1 y ahi surgue mi problema ya que quiero ke mediante
codigo esos valores se carguen al combox box, e intentado varios
caminos y no he logrado un resultado favorable.

Espero que alguien me ayude a despejar este incoveniente.


Saludos

Gleiser
José A. Castrejón
2008-04-21 16:42:01 UTC
Permalink
Hola... yo hago lo siguiente que me funciona muy bien. Esta rutina la llamo
al cargar un formulario

Mis datos comienzan en la fila 2 en la fila 1 tengo titulos de columnas.

Dim I, Hasta

Dim Info As Worksheet
Dim Rg As Range, Cuantos
Dim TotAl '** Matriz en donde almaceno clientes y claves

Set Info = Sheets("INFOCTES") '*** hoja de clientes
Set Rg = Sheets("INFOCTES").Range("A2:A60000") '**rango donde pueden estar
mis clientes

TotAl = Application.WorksheetFunction.CountIf(Rg, ">0") + 1 '**Cuento
cuantos clientes hay (cuento cuantas claves mayores a cero hay), mis clientes
se ingresan por codigo con claves consecutivas numericas

Hasta = TotAl + 1

CmboCtes = Empty '** vacio el combo

ReDim Clientes(TotAl, 1) '** dimensiono la matriz

Dim J As Integer

J=0

'*** con este ciclo recorro las filas y meto los datos a la matriz

For I = 2 To Hasta
If Not Info.Cells(I, 2) = "" Then
Clientes(J, 0) = Info.Cells(I, 1)
Clientes(J, 1) = Info.Cells(I, 2)
J = J + 1
Cuantos = Cuantos + 1
End If
Next I


CmboCtes.ColumnCount = 2
CmboCtes.ColumnWidths = "20;100"
CmboCtes.List = Clientes
CmboCtes.List() = Clientes '***asigno la matriz al combo

CmboCtes.ListRows = Cuantos

Espero te sirva
Saludos
Gleiser Camizán Lozano
2008-04-22 21:06:56 UTC
Permalink
Gracias José, logre levantar mi duda

*una ultima interrogante cual es la diferencia entre estas lineas de
codigo, que aparecen al final de tu codigo.

CmboCtes.List = Clientes
CmboCtes.List() = Clientes

Saludos

Gleiser

Continúe leyendo en narkive:
Loading...