< návrat zpět
MS Excel
Téma: VBA Excel - Pomalé načítání dat do Listboxu
Zaslal/a Vaclav-Vesely 28.8.2015 9:48
Potřeboval bych poradit s kódem pro inicializaci Userformu, konkrétně se jedná o načítání dat do Listboxu, na mém počítači to načítá v řádu sekund, ale na jiném v řádu minut a to je už nepoužitelné pro praxi. Problém je asi v tom, že načítám data z jiného zavřeného sešitu. Poradí někdo kde by mohl být zakopaný pes? Díky
Private Sub UserForm_Initialize()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
ListBox1.ColumnCount = 7
ListBox1.ColumnWidths = "60;60;30;130;40;40;130"
Dim path As String
Dim workbookName As String
Dim worksheetName As String
Dim cell As String
Dim returnedValue As String
r = 5
c = 1
x = 0
path = "P:\Slozka\"
workbookName = "Soubor.xlsm"
worksheetName = "List"
cell = Cells(r, c).Address
returnedValue = "'" & path & "[" & workbookName & "]" & worksheetName & "'!" & Range(cell).Address(True, True, xlR1C1)
hodnota = ExecuteExcel4Macro(returnedValue)
Do While hodnota <> 0
ListBox1.AddItem
For y = 0 To 6
returnedValue = "'" & path & "[" & workbookName & "]" & worksheetName & "'!" & Range(cell).Offset(x, 0).Address(True, True, xlR1C1)
returnedValue1 = "'" & path & "[" & workbookName & "]" & worksheetName & "'!" & Range(cell).Offset(x, y).Address(True, True, xlR1C1)
hodnota1 = ExecuteExcel4Macro(returnedValue1)
If hodnota1 = 0 Then hodnota1 = ""
ListBox1.List(x, y) = hodnota1
Next y
hodnota = ExecuteExcel4Macro(returnedValue)
x = x + 1
Loop
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
eLCHa(31.8.2015 11:22)#026551 @Vovka
;))
Máte pravdu - pokud napíše
Range("A1:C100").Formula = "='Cesta\[Nazev]List'!A5"bude to fungovat také (nevyzkoušeno, ale předpokládám).
Někde na začátku jsem se rozhodl pro R1C1 - už nevím proč - zřejmě podle .Address(True, True, xlR1C1) v dotazu.
A pak už se všechny dotazy týkaly R1C1.
Jen dodám, že pokud používám relativní odkazy v kódu - tak vždy dávám přednost R1C1 - je to jednodušší (pro mne)
citovat
Vovka(31.8.2015 12:00)#026553 Spadnul mi kámen ze srdce
! Notaci R1C1 pokládám za geniální vynález např. kvůli tomu, že všechny rozkopírované vzorce mají ve své oblasti totožné znění R1C1. Jejich jazyk mi je ale cizí a těžko stravitelný (čtu ho pomalu a nerad).
Jediný skutečný problém s notací při psaní vzorců podle mne vzniká, pokud vzorec plním kódem VBA. Tam musím zapomenout na použití .FormulaLocal, abych nezpůsobil malér při budoucí práci s jinojazyčným Excelem. Ale vložení vzorce v notaci A1 do .Formula vždy dokáže nahradit vložení odpovídajícího vzorce v notaci R1C1 do .FormulaR1C1.
To říká mých patnáct let manželství s Excelem.
citovat
elninoslov(31.8.2015 20:16)#026571 @Vaclav-Vesely: Tak si to tu čítam, ale nevidím či a o koľko sa Vám to podarilo zrýchliť. Uveďte teda prosím pre úplnosť ako ste pokročil. Či už čas alebo prílohu.
citovat