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

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: 3377
Registrován: 24 říj 2008 19:50

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

Příspěvek od atari »

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()"
navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: 29 srp 2008 16:49

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

Příspěvek od navstevnik »

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: 3377
Registrován: 24 říj 2008 19:50

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

Příspěvek od atari »

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.
Zamčeno
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Jak zjistit verzi displayportu u notebooku
    od walderan » » v Problémy s hardwarem
    5 Odpovědi
    3795 Zobrazení
    Poslední příspěvek od petr22
  • Přechod z Excel 21 na Excel 24
    od Snekment » » v Kancelářské balíky
    2 Odpovědi
    14487 Zobrazení
    Poslední příspěvek od Snekment
  • Problémy v síti na obrázku - proč nemůžou počítače komunikovat mezi sebou
    od zuzana3 » » v Administrace sítě
    7 Odpovědi
    10338 Zobrazení
    Poslední příspěvek od zuzana3
  • Pohoda a excel
    od brownwld » » v Kancelářské balíky
    1 Odpovědi
    7408 Zobrazení
    Poslední příspěvek od atari
  • Tisk sloupců vedle sebe na A4 - Excel
    od atari » » v Kancelářské balíky
    5 Odpovědi
    5985 Zobrazení
    Poslední příspěvek od atari

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