Código de listtbox ¿Qué significa este código de listbox?

Private Sub UserForm_Initialize()
Dim fila As Long
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Set b = Sheets("Hoja2")
uf = b.Range("A" & Rows.Count).End(xlUp).Row
uc = b.Cells(1, Columns.Count).End(xlToLeft).Address
wc = Mid(uc, InStr(uc, "$") + 1, InStr(2, uc, "$") - 2)
With Me.ListBox1
.ColumnCount = 2
.ColumnWidths = "30 pt;150 pt"
.RowSource = "Hoja2!A2:" & wc & uf
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Alguien me dice por favor como  se traduce esta linea no la entiendo:

wc = Mid(uc, InStr(uc, "$") + 1, InStr(2, uc, "$") - 2) dime

2 Respuestas

Respuesta
5

H o la: Te explico lo que hace en esta línea:

wc = Mid(uc, InStr(uc, "$") + 1, InStr(2, uc, "$") - 2)

En la variable uc almacena la dirección de la última columna con datos de la fila 1.

Para obtener la dirección de la última columna de la fila 1, utiliza esta instrucción:

uc = b.Cells(1, Columns.Count).End(xlToLeft).Address

Por ejemplo, si la ultima celda con datos de la fila 1 es la D1, en la variable uc se almacena 

$D$1

Ahora, del texto "$D$1", necesitamos extraer la letra "D". Con la letra "D" posteriormente se arma el rango de celdas a cargar en el listbox.

Entonces, regresando a esta instrucción:

wc = Mid(uc, InStr(uc, "$") + 1, InStr(2, uc, "$") - 2)
sustituyendo uc = "$D$1"
wc = Mid("$D$1", InStr("$D$1", "$") + 1, InStr(2, "$D$1", "$") - 2)
.
wc = Mid("$D$1", InStr("$D$1", "$") + 1, InStr(2, "$D$1", "$") - 2)
El primer "$" se encuentra en la posición 1, luego le suma + 1 = 2
Entonces:
wc = Mid("$D$1", 2, InStr(2, "$D$1", "$") - 2)
.
Luego busca otro "$", pero empieza en la posición 2, y lo encuentra en
la posición 3, luego le resta -2
Entonces:
wc = Mid("$D$1", 2, 1)
.
Lo siguiente es extraer de "$D$1", la posición 2 y de longitud 1
wc = "D"

Por último ya puede armar el rango de celdas a cargar en el listbox

.RowSource = "Hoja2!A2:" & wc & uf
sustituyendo wc = "D"
.RowSource = "Hoja2!A2:" & "D" & uf
quedaría así:
.RowSource = "Hoja2!A2:D" & uf
Y por último, la variable uf, debe tener el número de la última fila con datos,
Por ejemplo, si fuera un 10, quedaría así:
.RowSource = "Hoja2!A2:D10"

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
Respuesta
1

Esa línea sirve para determinar la letra de la última columna con dato

Se usa para armar es rango de datos del rowsource del listbox

.RowSource = "Hoja2!A2:" & wc & uf

Mira estos ejemplos

http://www.programarexcel.com/2015/10/lenar-listbox-on-add-item-o-rowsource.html 

http://www.programarexcel.com/2015/09/pasar-datos-listbox-hoja-de-excel.html 

http://www.programarexcel.com/2015/09/pasar-datos-de-listbox-con-doble-click.html 

Aca tienes cientos de ejemplos los cuales podrás utilizar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas