Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  213 214 215 216 217 218 219 220 221   další » ... 302

Áno, žiaľ. Ak je v zošite jediný list, tak je šumák, aký názov sa napíše, automaticky vloží správny odkaz na správny (jediný) list. No ak ich je viac, nespapá to. 7

Jediné čo mi tam na prvý pohľad bije do očí ohľadom pamäti je práve to spomínané neuvoľňovanie 4 objektov v rekurzii. A ohľadom rýchlosti mi nesedí nepredstaviteľné množstvo volaní listov a buniek. Ja by som to prerobil na polia. To by malo pri takomto množstve volaní podstatne pomôcť v rýchlosti. Neviem či to zvládnte, alebo či to bude možné (tak dopodrobna som to zas neskúmal). A farbu by som nastavil cez PF asi.A možno aj ExecuteExcel4Macro by sa dalo nahradiť tak, že by sa do listu Data vložil vzorec na všetky testované súbory, a tie čo nemajú daný list by hodili chybu. No a tie chyby potom vybrať pomocou SpecialCells a zmazať riadky.
Ale ako vravím, príliš som to neskúmal.

Ak by bolo potrebné údaje aj "databázovať", tak som pripravil ten spomínaný variant 3.

Aj tak mi nieje jasná jedna zásadná vec. Vy chcete
1. mať vyplnené napr. listy pre každý mesiac, a jeden list napr. kontrolný, v ktorom si kliknete na mesiac, a do kontrolnej tabuľky sa Vám načítajú vzorcami údaje zo zvoleného listu zvoleného mesiaca.
2. mať uni-šablónu na odátumovanie tabuľky, kde si zvolíte mesiac, a do tejto tabuľky potom vpisujete údaje. Keď si zvolíte nový mesiac, predátumuje sa tabuľka, vymažete si predošlé údaje, a vpisujete nové.
3. viď 2., ale s tým, že sa staré údaje uchovávajú niekde v databázovom liste, odkiaľ sa makrom pri zmene mesiaca (ak tento existuje v DB) načítajú.

To sú zásadné rozdiely, určujúce prípadné riešenie.

Iný príklad:
Public Sub Najdi()
Dim rd As Single, aVAL(), RNG As Range, Cell As Range, E As Long

ReDim aVAL(1 To 2, 1 To 1)
aVAL(1, 1) = "Vzorec": aVAL(2, 1) = "Buňka"
rd = 1

On Error Resume Next
Set RNG = Worksheets("Data").Cells.SpecialCells(xlCellTypeAllValidation)
E = Err
On Error GoTo 0

If E = 0 Then
ReDim Preserve aVAL(1 To 2, 1 To RNG.Cells.Count + 1)
For Each Cell In RNG
rd = rd + 1

With Cell
aVAL(1, rd) = .Validation.Formula1
aVAL(2, rd) = .Address
If .Validation.Formula2 <> "" Then
ReDim Preserve aVAL(1 To 2, 1 To UBound(aVAL, 2) + 1)
rd = rd + 1
aVAL(1, rd) = .Validation.Formula2
aVAL(2, rd) = .Address
End If
End With

Next Cell
Set RNG = Nothing: Set Cell = Nothing
End If

With Worksheets("Overenie")
.Range(.Cells(1, "CB"), .Cells(Rows.Count, "CA").End(xlUp)).ClearContents
.Cells(1, "CA").Resize(rd, 2).Formula = WorksheetFunction.Transpose(aVAL)
End With
End Sub

EDIT: malá úprava podľa nápadu Jeza.m s iným druhom Formula2 (pri rôznych typoch Validation)

Pretože sa v liste nenachádza žiadne xlCellTypeAllValidation, a nieje čo Selectnúť.

marjankaj má na mysli niečo takéto (maticovo):
=SUM(LEFT(C1:C4;FIND("-";C1:C4)-1)*1)&"-"&SUM(RIGHT(C1:C4;LEN(C1:C4)-FIND("-";C1:C4))*1)
=SUMA(ZLEVA(C1:C4;NAJÍT("-";C1:C4)-1)*1)&"-"&SUMA(ZPRAVA(C1:C4;DÉLKA(C1:C4)-NAJÍT("-";C1:C4))*1)

alebo
=SUM(LEFT(C1:C4;FIND("-";C1:C4)-1)*1)&"-"&SUM(REPLACE(C1:C4;1;FIND("-";C1:C4);"")*1)
=SUMA(ZLEVA(C1:C4;NAJÍT("-";C1:C4)-1)*1)&"-"&SUMA(NAHRADIT(C1:C4;1;NAJÍT("-";C1:C4);"")*1)

Napr. ?

Pr.

Premýšľam o nejakej zložitej matici, no neviem neviem, uvidíme podľa času a chuti, možno ...

Makrom to nieje problém.

A nepotrebujete si tie tabuľky skupín pred zápisom nových, najskôr vymazať? Ak áno môžete to urobiť teda pred každým zápisom poľa Skupiny, alebo jednorázovo na začiatku makra napr.
List4.Range("C2:D20,K2:L20,S2:T20,C22:D40,K22:L40,S22:T40,C42:D60,K42:L60,S42:T60").ClearCOntents
alebo napr výmenou stredu makra za:
ReDim Skupiny(1 To 19, 1 To 2)
Skupiny(1, 1) = Cas(1, 1): Skupiny(1, 2) = Co(1, 1)

For i = 2 To Riadkov
If Co(i, 1) <> Co(i - 1, 1) Then
u = u + 1
Skupiny(u, 1) = Cas(i, 1): Skupiny(u, 2) = Co(i, 1)
End If
Next i

With List4.Cells(2 + Dolu, 3 + VpravoStroj2)
.Resize(19, 2) = Skupiny
.Resize(19).NumberFormat = "h:mm:ss"
End With

kde sa nepoužije dynamické pole, ale statické, čo má za následok zmazanie nevyplnených hodnôt.

Treba lepšie špecifikovať, čo znamená Text1 a Text2. Či sa to nadeklaruje ako konštanta, alebo to má byť počítaný text. Pridal som Vám to tam, prípadne si to rozložte na viac riadkov, alebo do klasického IF THEN, alebo SELECT CASE. Problém ale je, či budú hodnoty skutočne iba 0 a 1. To treba presne špecifikovať, inak to nebude fachať...

Vložte nejakú prílohu pre predstavu...

Hmm. No tak skúste toto. Schválne nepoviem, že sa to ovláda pravým klikom, nepoviem ... 1

Skúste či na to prídete, ako ...

EDIT: Síce som asi nepochopil o čo vlastne ide, ale tu je teda aspoň návod ako to pracuje:

-pravý klik do C na krúžok aktivuje funkciu vkladania matíc do poľa kde prebiehajú prieniky (I2:BF51)
-opätovným pravým klikom sa deaktivuje umiestňovanie matíc myšou
-ak je umiestňovanie aktívne (čierna gulička), tak pravým klikom do poľa prienikov, sa pole aktualizuje, pričom dochádza aj k zlučovaniu (podľa E - počet buniek v každom smere), aj k vyfarbeniu názvu objektu a obrysu (podľa farby písma v D), zrátaniu prienikov
-prepočítanie funguje aj po stlačení tlačítka (v prípade napr. zmeny parametrov)
-pridanie nového objektu sa robí tak, vypíšete D:G a pravým klikom na C v danom riadku aktivujete umiestňovanie (viď vyššie)

Pr.

EDIT: kolega bol rýchlejší 1


Strana:  1 ... « předchozí  213 214 215 216 217 218 219 220 221   další » ... 302

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

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.

On-line nástroje