Tady je kousek kódu který jsem kdysi používal. Bohu žel takto Vám to moc nepomůže protože musíte adresovat konkrétní prvek (ProgressBar).
Sub SplitColumn (ByVal SheetName As String, ByVal ColumnName As String, ByVal ColumnsNo As Long, ByVal RowsNo As Long )
iSheetIndex = ThisComponent.CurrentSelection.CellAddress.Sheet
oSheet = ThisComponent.Sheets.getByIndex( iSheetIndex )
oBar = THISCOMPONENT.CurrentController.StatusIndicator
iNum = 2
oBar. start ( "Split column " & ColumnName & " in sheet " & SheetName, RowsNo/ColumnsNo )
For nR = 0 to RowsNo/ColumnsNo' Volba
oBar.setValue ( nR )
For nC = 0 To ColumnsNo - 1
oSheet.getCellByPosition (nC,nR).setFormula("=" & SheetName & "." & ColumnName & iNum )
iNum = iNum + 1
Next nC
Next nR
oBar.End
End Sub
Princip je v tom, že se zadávají startovní a koncové hodnoty a pak nárůsty pro posuv. Méně šikovné je stavět na čase který se individuálně liší u stejného procesu. Na konci pak hlásí třeba 100% a stále jede.
Vám bych doporučil 2 proužky. První na počet souborů a druhý na jednoslivý soubor. Ten už můžete odhadnout průměrným časem. Zde se totiž ten časový posun nedá vysledovat. Navíc můžete udělat poslední soubor jenom jako samoúčelný :
Sub Posledni Soubor
Wait 1000
End sub
Ten totiž zaručeně skončí po té sekundě (jednotky Wait 1/1000 sec). Takže Disproporce se eliminuje a konec se zobrazí korektně. Také doporučuji jednotlivé kroky deklarovat jako global. Máte - li například 10 souborů zadáte rozsah na 11 (poslední soubor je fiktivní Wait). Při načtení dalšího souboru se hodnota změní a ukazovátko poskočí.
U složitějších operací - uvedený kód lze používat velikost podílu i nezávisle. Lze například přidávat do hlášky "provádí se 6. operace xyz% z celku 9 pro 4. soubor z celku 11". Hláška může být na formu, nebo v dolním pruhu okna, PopUp okně, buňce ap.
Editoval neutr (26. 2. 2017 15:11:12)
Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ