No a čo to ostatné, čo som písal ?
Tých 15 stĺpcov (so skrytými 19) s listu2 potrebuješ dostať do 12-ich stĺpcov na list1, a to od riadku 41, od ktorého sú ešte data, a prepísať ich ???
Tým "HP K OPRAVĚ" myslíš "HP do opravy" ? Tam stačí dať :
=IF(AND(List1!C16="PR";List1!H16="I");1;"")
A tým "I" myslíš to "/" ?
Takže najskôr chceš podľa dát v liste1 vypočítať nejaké údaje do listu2 a následne (aj) tieto isté data z listu2 nakopírovať od riadku 41 do listu1?
Túto "slovnú úlohu" nechápem. Neviem čí to je ... Prosím, lepší (omnoho) popis.
No tak si namiesto
.Execute
daj
NazovSuboru = .SelectedItems(1)
Úprava, keďže nastáva problém s tým, že každá aplikácia môže mať iba jeden msoFileDialogOpen, tak po zatvorení tohto upraveného dialógu, ostáva stále filter CSV. Obnoví sa to až po reštarte aplikácie. Vyriešil som to tak, že som najskôr odložil filtre do poľa, vykonal, a následne z poľa pôvodné filtre obnovil. Je to potrebné preto, ak by sa niekde v aplikácii použil msoFileDialogOpen, kde je potrebný iný/žiadny filter.
Sub OtvorCSV() 'Otvor súbor CSV, obnv pôvodné filtre
Dim dlg As FileDialog, f As Integer, pfs() As String
Set dlg = Application.FileDialog(msoFileDialogOpen)
With dlg
With .Filters
If .Count > 0 Then 'Ak sú pôvodné filtre - uchovaj
ReDim pfs(1 To .Count, 1 To 2)
For f = 1 To .Count
pfs(f, 1) = .Item(f).Description
pfs(f, 2) = .Item(f).Extensions
Next f
End If
End With
.Filters.Clear 'Vymaž filtre
.Filters.Add "CSV Files Only", "*.csv" 'Nastav CSV filter
If .Show = True Then .Execute
Koniec:
With .Filters
.Clear 'Vymaž CSV filter
If Not Not pfs Then 'Ak boli pôvodné filtre - obnov
For f = 1 To UBound(pfs, 1)
.Add pfs(f, 1), pfs(f, 2)
Next f
End If
End With
End With
Set dlg = Nothing
End Sub
Sub OtvorCSV()
With Application.FileDialog(msoFileDialogOpen)
.Filters.Clear
.Filters.Add "CSV Files Only", "*.csv"
If .Show = True Then .Execute Else Exit Sub
End With
End Sub
Napr. aj takto ?
A toto ti nefunguje ?
Range("A1").Value = Year(Date)
Makro je spúšťané z udalosti OnChange listu Data, ktorá kontroluje všetky zmeny v liste Data, a ak došlo k zmene v danom stĺpci spustí makro. Túto OnChange metódu uvidíš, keď 2x klikneš vo VBA Editore na list Data.
Tie poznámky budem musieť dorobiť neskôr. Prečítal som to len zbežne. Momentálne ma "okupuje" syn :) Takže keď bude čas, OK.
EDIT: Formátovanie som teraz urobil na každom hárku cez Podmienené formátovanie (a to aj skupiny, aj podskupiny, aj data). Ak to tak môže byť, zmaž si vyapostrofované časti v procedúre pPresunFaza v konštrukcii With. Snáď som to dobre pochopil. Pekný deň.
EDIT2: Ešte malá zmena - odstránenie zabudnutých nepoužitých premenných a obmedzenie Fázy na číslo <43 v OnChange. Príloha vymenená za aktuálnu.
Práveže podľa mňa to potrebné kvôli jednoduchosti použitia je. Ak nieje známy počet vyplnených buniek, dá CONCATENATE_RANGE na konci delimiter. To sa dá ošetriť, napr tak, že sa vloží ako parameter už vypočítaná zaplnená oblasť, bez prázdnych buniek na konci. Lenže delimiter dostaneme aj keď bude medzi zaplnenou oblasťou prázdna bunka. Preto som dal cyklus. Možno sa to dá urobiť inak, toto je prvé čo ma napadlo, a ďalej som to už neskúmal :)
Ja by som to urobil pomocou UDF asi takto
Function fSpoj(ByRef Rozsah As Range) As String
Dim Bunka As Range
For Each Bunka In Rozsah
If Bunka <> "" Then fSpoj = fSpoj & IIf(Bunka.Address = Rozsah.Cells(1).Address, "", ", ") & Bunka
Next Bunka
End Function
Tak potom maticovým vzorcom takto, bez makra. Ak to chceš makrom tak ti to naprogramujem.
No na 2003 nefunguje výberový zoznam na mesiac. Nesmie sa používať odkaz na iný list. Dá sa to obísť cez Názov, ktorý odkazuje na daný list. Ďalej nefunguje podmienené formátovanie, rovnaký dôvod aj riešenie. Farby sú samostatná kapitola, pže novšie verzie majú "Advanced" farby, ktoré sa na starších nezobrazujú správne (resp. zobrazuje sa najpodobnejšia). Ostatné by malo fungovať.
Verziu 2007 kvôli tomu na testovanie nebudem inštalovať.
No vyskúšaj
1. Ten vzorec na posledné dni je upravený. Malo by to byť OK.
2. Ja som sa čudoval načo má v A1 odkaz na A40 (31. deň v ktoromkoľvek mesiaci). To je blbosť, veď každý nemá 31 dní. V žiadnom vzorci som nenašiel odkaz na A1, tak som to zmazal. Nejaký pozostatok.
Prosím upresni mi ešte raz a podrobne, čo patrí ku ktorej skupine/podskupine. Mne z toho teda vôbec nieje jasné, čo je skupina a čo je podskupina.
Totiž:
-prvá je uvedená číslica (nazvime to radšej znak) "1", to evokuje, že to je skupina "1". Tá obsahuje (???) podskupiny "A", "B", "C", "D" ???, To mi ale nesedí, pretože ďalej je "2", čo by mala byť asi skupina (nie podskupina), ale tá neobsahuje žiadne podskupiny "A", "B" ... Rovnako "3".
Tak ako je to napísané mi to nedáva zmysel. Pripadá mi to nekonzistentné (rozdielne).
Ja by som si podobný problém predstavoval takto:
- mám skupiny napr. 1,2,3,...
- v každej z nich sú podskupiny A,B,C,...
Prečo je to dôležité? Lebo je logické zapísať do "Ukoncene" najskôr názov skupiny, potom podskupiny, a potom riadok s údajom (samozrejme riadok sa zoskupí s jeho podskupinou/skupinou). Kdežto teraz to v tom "Ukoncene" vyzerá tak, že raz je skupina číslo a podskupina písmeno, a potom opačne. Narážam na riadky 2,3 a 11,12 v Ukoncene.
Navyše data až na jeden riadok v Ukoncene nekorešpondujú s Data.
Navrhujem:
Vyfarbi mi prosím v Data aj Ukoncene rovnaké skupiny a podskupiny rovnakou farbou, napr. vyfarbením G v Data a Q v Ukoncene.
Keď to pochopím, tak ti to (snáď) urobím.
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.