poner en un listbox numeros automaticamente en la columna de la derecha

20/11/2007 - 19:07 por daniel | Informe spam
Hola a todos
tengo un listbox y el cual le relleno con datos mediante macros.
como puedo poner un boton para que me ponga a la derecha del todo una
columna
y en esta los numeros (1,2,3.) pero solo asta los que hay en la
propiedad (ListBox1.ListCount).
y que al seleccionar un dato del listbox1 en el label1 me de el numero y en
el label2 el dato de la columna2.
Ejemplo:
listbox1 es asi como lo tengo al principio
columna1
presupuesto
gasto
gasto mes
gasto
año 2007

es asi como deberia quedar el listbox al pulsar el boton
columna1
1 presupuesto
2 gasto
3 gasto mes
4 gasto año 2007




un saludo a todos
Daniel

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
21/11/2007 - 17:35 | Informe spam
hola, daniel !

1) si el relleno lo haces mediante el metodo .AddItem
solo necesitaras un "contador" que en cada avance ponga el numero en la columna 1 de tu control
(obviamente, el control debera estar preparado para administrar dos columnas)

2) si el relleno es usando la propiedad .RowSource
tendras que agregar la numeracion en el lstado de donde se toman los elementos de tu control

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ la consulta origina __
tengo un listbox y el cual le relleno con datos mediante macros.
como puedo poner un boton para que me ponga a la derecha del todo una columna
y en esta los numeros (1,2,3.) pero solo asta los que hay en la propiedad (ListBox1.ListCount).
y que al seleccionar un dato del listbox1 en el label1 me de el numero y en el label2 el dato de la columna2.
Ejemplo:
listbox1 es asi como lo tengo al principio
columna1
presupuesto
gasto
gasto mes
gasto
año 2007

es asi como deberia quedar el listbox al pulsar el boton
columna1
1 presupuesto
2 gasto
3 gasto mes
4 gasto año 2007
Respuesta Responder a este mensaje
#2 daniel
22/11/2007 - 18:32 | Informe spam
Hola Hector Miguel
Muchas gracias por responder:
No consigo poner los numeros en la columna de la derecha.
como podria hacer para poner los numeros en la columna 1 y que al activar el
userform se seleccione el 5 dato del listbox.
esta es la macro que uso para poner los datos en el listbox carga los
archivos de la ruta que ponga en el textbox:
Private Sub TextBox1_Change()
Call GetFiles(TextBox1)
total = ListBox1.ListCount
End Sub
Private Sub GetFolders(fld As Folder, Optional par As Folder = Null)
Dim kid As Folder, nod As Node
On Error Resume Next
If par Is Nothing Then
Set nod = TreeView1.Nodes.Add(, , fld.Name, fld.Name)
nod.Expanded = True
Else: TreeView1.Nodes.Add par.Name, tvwChild, fld.Name, fld.Name
End If
Application.StatusBar = "Filling nodes for " & fld.path
For Each kid In fld.SubFolders
Call GetFolders(kid, fld)
Next
End Sub
Private Sub GetFiles(sPath As String)
On Error Resume Next
Dim FSO As FileSystemObject, fld As Folder, fil As File
Set FSO = New Scripting.FileSystemObject
Set fld = FSO.GetFolder(sPath)
ListBox1.Clear
For Each fil In fld.Files
If fil.Name Like "*.wma" Then ListBox1.AddItem fill.Name
Next
End Sub

un saludo y muchas
daniel


"Héctor Miguel" escribió en el mensaje
news:
hola, daniel !

1) si el relleno lo haces mediante el metodo .AddItem
solo necesitaras un "contador" que en cada avance ponga el numero en la
columna 1 de tu control
(obviamente, el control debera estar preparado para administrar dos
columnas)

2) si el relleno es usando la propiedad .RowSource
tendras que agregar la numeracion en el lstado de donde se toman los
elementos de tu control

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ la consulta origina __
tengo un listbox y el cual le relleno con datos mediante macros.
como puedo poner un boton para que me ponga a la derecha del todo una
columna
y en esta los numeros (1,2,3.) pero solo asta los que hay en la
propiedad (ListBox1.ListCount).
y que al seleccionar un dato del listbox1 en el label1 me de el numero y
en el label2 el dato de la columna2.
Ejemplo:
listbox1 es asi como lo tengo al principio
columna1
presupuesto
gasto
gasto mes
gasto
año 2007

es asi como deberia quedar el listbox al pulsar el boton
columna1
1 presupuesto
2 gasto
3 gasto mes
4 gasto año 2007




Respuesta Responder a este mensaje
#3 Héctor Miguel
22/11/2007 - 19:47 | Informe spam
hola, daniel !

No consigo poner los numeros en la columna de la derecha.
como podria hacer para poner los numeros en la columna 1 y que al activar el userform se seleccione el 5 dato del listbox.
esta es la macro que uso para poner los datos en el listbox carga los archivos de la ruta que ponga en el textbox:



1) primero decide si la numeracion de los items agregados la necesitas en la columna 1 o en la columna 2 (primera/segunda) -?-

2) considera que los elementos/campos/filas/columnas/... de controles activex se cuentan desde 0 (cero) hasta n_elementos MENOS 1
o sea, si tu control sera de 2 columnas, la primera es CERO y la segunda es UNO
(a menos que en ese modulo de codigo uses la instruccion Option Base 1 -en el area de declaraciones-)

3) para agregar el numero en la primer columna (la # 0) en tu control de lista...
modifica el procedimiento "GetFiles" +/- a lo siguiente:

Private Sub GetFiles(sPath As String)
On Error Resume Next
Dim FSO As FileSystemObject, fld As Folder, fil As File, n As Integer
Set FSO = New Scripting.FileSystemObject
Set fld = FSO.GetFolder(sPath)
ListBox1.Clear
ListBox1.ColumnCount = 2
For Each fil In fld.Files
If fil.Name Like "*.wma" Then
ListBox1.AddItem
ListBox1.List(n, 0) = n + 1
ListBox1.List(n, 1) = fil.Name
n = n + 1
End If
Next
End Sub

si cualquier duda (o informacion adicional)... comentas ?
saluldos,
hector.

__ los codigos expuestos __
Private Sub TextBox1_Change()
Call GetFiles(TextBox1)
total = ListBox1.ListCount
End Sub
Private Sub GetFolders(fld As Folder, Optional par As Folder = Null)
Dim kid As Folder, nod As Node
On Error Resume Next
If par Is Nothing Then
Set nod = TreeView1.Nodes.Add(, , fld.Name, fld.Name)
nod.Expanded = True
Else: TreeView1.Nodes.Add par.Name, tvwChild, fld.Name, fld.Name
End If
Application.StatusBar = "Filling nodes for " & fld.path
For Each kid In fld.SubFolders
Call GetFolders(kid, fld)
Next
End Sub
Private Sub GetFiles(sPath As String)
On Error Resume Next
Dim FSO As FileSystemObject, fld As Folder, fil As File
Set FSO = New Scripting.FileSystemObject
Set fld = FSO.GetFolder(sPath)
ListBox1.Clear
For Each fil In fld.Files
If fil.Name Like "*.wma" Then ListBox1.AddItem fill.Name
Next
End Sub



__ las consultas anteriores __
1) si el relleno lo haces mediante el metodo .AddItem
solo necesitaras un "contador" que en cada avance ponga el numero en la columna 1 de tu control
(obviamente, el control debera estar preparado para administrar dos columnas)

2) si el relleno es usando la propiedad .RowSource
tendras que agregar la numeracion en el lstado de donde se toman los elementos de tu control

__ la consulta origina __
tengo un listbox y el cual le relleno con datos mediante macros.
como puedo poner un boton para que me ponga a la derecha del todo una columna
y en esta los numeros (1,2,3.) pero solo asta los que hay en la propiedad (ListBox1.ListCount).
y que al seleccionar un dato del listbox1 en el label1 me de el numero y en el label2 el dato de la columna2.
Ejemplo:
listbox1 es asi como lo tengo al principio
columna1
presupuesto
gasto
gasto mes
gasto
año 2007

es asi como deberia quedar el listbox al pulsar el boton
columna1
1 presupuesto
2 gasto
3 gasto mes
4 gasto año 2007
Respuesta Responder a este mensaje
#4 daniel
26/11/2007 - 18:47 | Informe spam
Hola Hector Miguel
Muchisimas gracias por el codigo era lo que necesitaba.
Siento haber tardado tanto en responder pero tengo la siguiente duda.
En la siguiente macro por que si creas una carpeta dentro de otra y con el
mismo nombre no aparece en el tree.
Ejemplo:
en la carpeta C:\Documents and Settings\DANIEL\Mis documentos\USUARIOS
creas una carpeta llamado USUARIOS esta no aparece.
esto pasa solo con las que estan repetidas.


como podria solucionar este error


un saludo y muchas gracias
Daniel
"Héctor Miguel" escribió en el mensaje
news:
hola, daniel !

No consigo poner los numeros en la columna de la derecha.
como podria hacer para poner los numeros en la columna 1 y que al activar
el userform se seleccione el 5 dato del listbox.
esta es la macro que uso para poner los datos en el listbox carga los
archivos de la ruta que ponga en el textbox:



1) primero decide si la numeracion de los items agregados la necesitas en
la columna 1 o en la columna 2 (primera/segunda) -?-

2) considera que los elementos/campos/filas/columnas/... de controles
activex se cuentan desde 0 (cero) hasta n_elementos MENOS 1
o sea, si tu control sera de 2 columnas, la primera es CERO y la
segunda es UNO
(a menos que en ese modulo de codigo uses la instruccion Option Base
1 -en el area de declaraciones-)

3) para agregar el numero en la primer columna (la # 0) en tu control de
lista...
modifica el procedimiento "GetFiles" +/- a lo siguiente:

Private Sub GetFiles(sPath As String)
On Error Resume Next
Dim FSO As FileSystemObject, fld As Folder, fil As File, n As Integer
Set FSO = New Scripting.FileSystemObject
Set fld = FSO.GetFolder(sPath)
ListBox1.Clear
ListBox1.ColumnCount = 2
For Each fil In fld.Files
If fil.Name Like "*.wma" Then
ListBox1.AddItem
ListBox1.List(n, 0) = n + 1
ListBox1.List(n, 1) = fil.Name
n = n + 1
End If
Next
End Sub

si cualquier duda (o informacion adicional)... comentas ?
saluldos,
hector.

__ los codigos expuestos __
Private Sub TextBox1_Change()
Call GetFiles(TextBox1)
total = ListBox1.ListCount
End Sub
Private Sub GetFolders(fld As Folder, Optional par As Folder = Null)
Dim kid As Folder, nod As Node
On Error Resume Next
If par Is Nothing Then
Set nod = TreeView1.Nodes.Add(, , fld.Name, fld.Name)
nod.Expanded = True
Else: TreeView1.Nodes.Add par.Name, tvwChild, fld.Name, fld.Name
End If
Application.StatusBar = "Filling nodes for " & fld.path
For Each kid In fld.SubFolders
Call GetFolders(kid, fld)
Next
End Sub
Private Sub GetFiles(sPath As String)
On Error Resume Next
Dim FSO As FileSystemObject, fld As Folder, fil As File
Set FSO = New Scripting.FileSystemObject
Set fld = FSO.GetFolder(sPath)
ListBox1.Clear
For Each fil In fld.Files
If fil.Name Like "*.wma" Then ListBox1.AddItem fill.Name
Next
End Sub



__ las consultas anteriores __
1) si el relleno lo haces mediante el metodo .AddItem
solo necesitaras un "contador" que en cada avance ponga el numero en
la columna 1 de tu control
(obviamente, el control debera estar preparado para administrar dos
columnas)

2) si el relleno es usando la propiedad .RowSource
tendras que agregar la numeracion en el lstado de donde se toman los
elementos de tu control





__ la consulta origina __
tengo un listbox y el cual le relleno con datos mediante macros.
como puedo poner un boton para que me ponga a la derecha del todo una
columna
y en esta los numeros (1,2,3.) pero solo asta los que hay en la
propiedad (ListBox1.ListCount).
y que al seleccionar un dato del listbox1 en el label1 me de el numero
y en el label2 el dato de la columna2.
Ejemplo:
listbox1 es asi como lo tengo al principio
columna1
presupuesto
gasto
gasto mes
gasto
año 2007

es asi como deberia quedar el listbox al pulsar el boton
columna1
1 presupuesto
2 gasto
3 gasto mes
4 gasto año 2007








Respuesta Responder a este mensaje
#5 daniel
26/11/2007 - 19:18 | Informe spam
Hola Hector Muiguel
Lo siento se me olvido la macro:)
Private Sub GetFolders(fld As Folder, Optional par As Folder = Null)
Dim kid As Folder, nod As Node
On Error Resume Next
If par Is Nothing Then
Set nod = TreeView1.Nodes.Add(, , fld.Name, fld.Name)
nod.Expanded = True
Else: TreeView1.Nodes.Add par.Name, tvwChild, fld.Name, fld.Name
End If
Application.StatusBar = "Filling nodes for " & fld.path
For Each kid In fld.SubFolders
Call GetFolders(kid, fld)
Next
End Sub
Private Sub GetFiles(sPath As String)
On Error Resume Next
Dim FSO As FileSystemObject, fld As Folder, fil As File
Set FSO = New Scripting.FileSystemObject
Set fld = FSO.GetFolder(sPath)
ListBox1.Clear
For Each fil In fld.Files
If fil.Name Like "*.*" Then ListBox1.AddItem fil.Name

Next
End Sub

Private Sub tvPopulate(sPath As String)
Dim FSO As FileSystemObject, fld As Folder
Set FSO = New Scripting.FileSystemObject
If FSO.FolderExists(sPath) Then
TreeView1.Nodes.Clear
Set fld = FSO.GetFolder(sPath)
Call GetFolders(fld)
TreeView1.Nodes(1).Selected = True

End If
End Sub



xD
un saludo
Daniel

"daniel" escribió en el mensaje
news:
Hola Hector Miguel
Muchisimas gracias por el codigo era lo que necesitaba.
Siento haber tardado tanto en responder pero tengo la siguiente duda.
En la siguiente macro por que si creas una carpeta dentro de otra y con el
mismo nombre no aparece en el tree.
Ejemplo:
en la carpeta C:\Documents and Settings\DANIEL\Mis documentos\USUARIOS
creas una carpeta llamado USUARIOS esta no aparece.
esto pasa solo con las que estan repetidas.


como podria solucionar este error


un saludo y muchas gracias
Daniel
"Héctor Miguel" escribió en el mensaje
news:
hola, daniel !

No consigo poner los numeros en la columna de la derecha.
como podria hacer para poner los numeros en la columna 1 y que al
activar el userform se seleccione el 5 dato del listbox.
esta es la macro que uso para poner los datos en el listbox carga los
archivos de la ruta que ponga en el textbox:



1) primero decide si la numeracion de los items agregados la necesitas en
la columna 1 o en la columna 2 (primera/segunda) -?-

2) considera que los elementos/campos/filas/columnas/... de controles
activex se cuentan desde 0 (cero) hasta n_elementos MENOS 1
o sea, si tu control sera de 2 columnas, la primera es CERO y la
segunda es UNO
(a menos que en ese modulo de codigo uses la instruccion Option Base
1 -en el area de declaraciones-)

3) para agregar el numero en la primer columna (la # 0) en tu control de
lista...
modifica el procedimiento "GetFiles" +/- a lo siguiente:

Private Sub GetFiles(sPath As String)
On Error Resume Next
Dim FSO As FileSystemObject, fld As Folder, fil As File, n As Integer
Set FSO = New Scripting.FileSystemObject
Set fld = FSO.GetFolder(sPath)
ListBox1.Clear
ListBox1.ColumnCount = 2
For Each fil In fld.Files
If fil.Name Like "*.wma" Then
ListBox1.AddItem
ListBox1.List(n, 0) = n + 1
ListBox1.List(n, 1) = fil.Name
n = n + 1
End If
Next
End Sub

si cualquier duda (o informacion adicional)... comentas ?
saluldos,
hector.

__ los codigos expuestos __
Private Sub TextBox1_Change()
Call GetFiles(TextBox1)
total = ListBox1.ListCount
End Sub
Private Sub GetFolders(fld As Folder, Optional par As Folder = Null)
Dim kid As Folder, nod As Node
On Error Resume Next
If par Is Nothing Then
Set nod = TreeView1.Nodes.Add(, , fld.Name, fld.Name)
nod.Expanded = True
Else: TreeView1.Nodes.Add par.Name, tvwChild, fld.Name, fld.Name
End If
Application.StatusBar = "Filling nodes for " & fld.path
For Each kid In fld.SubFolders
Call GetFolders(kid, fld)
Next
End Sub
Private Sub GetFiles(sPath As String)
On Error Resume Next
Dim FSO As FileSystemObject, fld As Folder, fil As File
Set FSO = New Scripting.FileSystemObject
Set fld = FSO.GetFolder(sPath)
ListBox1.Clear
For Each fil In fld.Files
If fil.Name Like "*.wma" Then ListBox1.AddItem fill.Name
Next
End Sub



__ las consultas anteriores __
1) si el relleno lo haces mediante el metodo .AddItem
solo necesitaras un "contador" que en cada avance ponga el numero en
la columna 1 de tu control
(obviamente, el control debera estar preparado para administrar dos
columnas)

2) si el relleno es usando la propiedad .RowSource
tendras que agregar la numeracion en el lstado de donde se toman los
elementos de tu control





__ la consulta origina __
tengo un listbox y el cual le relleno con datos mediante macros.
como puedo poner un boton para que me ponga a la derecha del todo una
columna
y en esta los numeros (1,2,3.) pero solo asta los que hay en la
propiedad (ListBox1.ListCount).
y que al seleccionar un dato del listbox1 en el label1 me de el numero
y en el label2 el dato de la columna2.
Ejemplo:
listbox1 es asi como lo tengo al principio
columna1
presupuesto
gasto
gasto mes
gasto
año 2007

es asi como deberia quedar el listbox al pulsar el boton
columna1
1 presupuesto
2 gasto
3 gasto mes
4 gasto año 2007












Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida