EXCEL: jak zjistit kolik je řádků mezi dvěma řádky Vyřešeno

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Uživatelský avatar
atari
Level 6
Level 6
Příspěvky: 3362
Registrován: říjen 08
Pohlaví: Muž
Stav:
Offline

Re: EXCEL: jak zjistit kolik je řádků mezi dvěma řádky

Příspěvekod atari » 07 dub 2010 09:54

Dík za makro, tak jsem si nastudoval co znamená offset a resize a už jsem na to příšel. Ty setridene hodnoty v "E" si můžu posunout kamkoliv původním makru sám. Musím upravit v hodnotě "Offset(0, 2)" tu dvojku na příslušný posun a v "Range("e2")" si napíšu jakýkoliv k tomu odpovídající slooupec. Zkoušel jsem to a funguje to... hurá... :D
A pak mám ještě dotaz.
Zkoušel jsem tu proceduru "PomRozdilRadku()" překopírovat do modulu, že bych to volal příkazem (ono se tam stejně bude nějaké makro při každém výpočtu bude spouštět), ale to dává chybu. To je potřeba nějak upravit? Nebo tam ještě musí být procedura "Worksheet_Calculate()"? Já myslel že ta jenom po každé změne v listu práve volá tu "PomRozdilRadku()"
A pak ještě nevím co dělá tato: "Workbook_Open()"

Reklama
navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: EXCEL: jak zjistit kolik je řádků mezi dvěma řádky

Příspěvekod navstevnik » 07 dub 2010 11:47

1. Workbook_Open() - tato procedura uzamyka pri otevreni sesitu list SUM (ochrana vzorcu pred nechtenym smazanim) a povoluje zmeny na listu proceduram VBA (setrideni sloupce) - argument UserInterfaceOnly:=True
2. Procedura PomRozdilRadku() je samostatne pouze jako dusledek postupneho psani kodu, nic nebrani telo teto procedury vlozit do procedury Worksheet_Calculate(), ktera defacto spousti prepocet.:

Kód: Vybrat vše

Private Sub Worksheet_Calculate()
  Application.ScreenUpdating = False
  On Error Resume Next  ' pro stav, kdy je TmpEE prazdna
  With Me
    .Range("tmpee").ClearContents
    On Error GoTo 0
    Application.EnableEvents = False
    ' prenest hodnoty z ColCC do TmpEE a setridit
    .Range("colcc").Offset(0, 2).Value = .Range("colcc").Value
    .Range("colcc").Offset(0, 2).Sort Key1:=.Range("colcc").Resize(1, 1).Offset(0, 2), _
        Order1:=xlDescending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    Application.EnableEvents = True
  End With
  Application.ScreenUpdating = True
End Sub

3. Muzes bez problemu proceduru PomRozdilRadku() prenest do standardniho modulu a volat jinou procedurou. Je nutno si vsak uvedomit, ze byla napsana pro uziti v modulu listu (prepocet listu Worksheet_Calculate() ). takze je nutno klicove slovo Me deklarujici implicitne objekt list, v nemz je procedura, nahradit Worksheets("sum"). Pri pouziti prikazu With:

Kód: Vybrat vše

Option Explicit

Private Sub PomRozdilRadku001()
  Application.ScreenUpdating = False
  With Worksheets("sum")
    On Error Resume Next  ' pro stav, kdy je TmpEE prazdna
    .Range("tmpee").ClearContents
    On Error GoTo 0
    Application.EnableEvents = False
    ' prenest hodnoty z ColCC do TmpEE a setridit
    .Range("colcc").Offset(0, 2).Value = .Range("colcc").Value
    .Range("colcc").Offset(0, 2).Sort Key1:=.Range("colcc").Resize(1, 1).Offset(0, 2), _
        Order1:=xlDescending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    Application.EnableEvents = True
  End With
  Application.ScreenUpdating = True
End Sub

Pokud tato procedura bude volana z jinych modulu, odstran deklaraci Private ( a muzes ji volat i z Worksheet_Calculate(), kdyz nebude volana odjinud)
Naposledy upravil(a) navstevnik dne 07 dub 2010 11:55, celkem upraveno 1 x.

Uživatelský avatar
atari
Level 6
Level 6
Příspěvky: 3362
Registrován: říjen 08
Pohlaví: Muž
Stav:
Offline

Re: EXCEL: jak zjistit kolik je řádků mezi dvěma řádky

Příspěvekod atari » 07 dub 2010 11:53

Aha, dík za info, dnes už na to není čas, zítra vyzkouším.

EDIT 10.4.:
to navstevnik: dik za info, vše jsem vyzkoušel, i řádky jsem přesunul a vše funguje :D . Přeji hezký den.


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Jak zjistit verzi displayportu u notebooku
    od walderan » 24 dub 2025 21:09 » v Problémy s hardwarem
    5
    3270
    od petr22 Zobrazit poslední příspěvek
    24 dub 2025 23:01
  • Přechod z Excel 21 na Excel 24
    od Snekment » 29 led 2025 13:46 » v Kancelářské balíky
    2
    12865
    od Snekment Zobrazit poslední příspěvek
    29 led 2025 15:05
  • Problémy v síti na obrázku - proč nemůžou počítače komunikovat mezi sebou Příloha(y)
    od zuzana3 » 25 pro 2024 20:33 » v Administrace sítě
    7
    6510
    od zuzana3 Zobrazit poslední příspěvek
    25 pro 2024 22:23
  • Pohoda a excel Příloha(y)
    od brownwld » 06 kvě 2025 17:28 » v Kancelářské balíky
    1
    6127
    od atari Zobrazit poslední příspěvek
    07 kvě 2025 09:41
  • Excel - výpočet nočních hodin Příloha(y)
    od Uziv00 » 17 říj 2024 11:22 » v Kancelářské balíky
    3
    3812
    od lubo. Zobrazit poslední příspěvek
    24 říj 2024 00:00

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti