Dobrej pokec   Lišanská šlapka   MSDN   VB na Microsoft.cz   NCHAT Nový design
   Portál  O firmě  Profil  Reference  Produkty  Odkazy  Diskuse  Tisková verze 



  Novinky e-mailem
Pokud chcete být informováni o změnách ,přihlašte se k odběru novinek!
  
  
  Nejčtenější články
 Seznam všech českých hubů abecedně. (32118)
 Seznam hubů nad 100 uživatelů (20829)
 Konfigurovatelné rozbalovací menu (17444)
 Jak na makra (14330)
 Rozbalovací menu v JavaScriptu (2.) (12652)
  Nejstahovanější soubory
 Action Meter (1846)
 Slovní Fotbal (777)
 IE Boss Guard (484)
 zdroják slovní fotbal (383)
 Folder Watcher (370)
  Anketa

  Nabídka portálu

 Adobe Premiere
    Jak se dá udělat
 Alternativní prohlížeče
    FireFox
 ASP
    Tipy a triky
 Direct Connect
    Huby
    Scripty pro HUB
    Tipy a triky CZDC++
 Game Maker
    Tipy a triky
 Hry
    Akční
    Logické
 HTML
    Scripting (VBS,JS)
    Tipy a triky
 Internet
    Užitečné triky
 Microsoft Office
    Tipy, triky, návody
    Užitečná makra
    VBA Tipy a triky
 MS SQL Server
    Nastavení
    Seriály
    Tipy a triky
 Multimedia
    Návody
 Oracle
    PL/SQL
 PHP
    Jak na to
    Tipy a triky
 Užitečné odkazy
    Grafické programy
    Programátorské
 Visual Basic
    DirectX
    Formuláře
    Jak se dá udělat ...
    Užitečné funkce
    Win32Api
    Zdroje
 Visual Basic .NET
    Užitečné funkce
 Vtípky
    Vtipy a anekdnoty
 Vypalování
    DVD Shrink
    Tipy a triky
 Windows
    Jak se dá ...
    Tipy a triky pro XP
    Triky pro IE


Nabídka portálu se při zobrazení článku přesouvá na konec pravého sloupce nabídek.

 Trik pro programování maker (VBA) v MS Aplikacích

Autor: SwitCZ
Zdroj: 
Vytvořeno: 7.7.2003 14:26:08
Publikováno: 7.7.2003 14:26:08
Čtenářů: 5652
Unikátních: 5360


Jak ošetřit události v Excelu, Wordu, Accessu atd.

Tento trik se hodí všem, kteří potřebují občas, tak jako já, v událostech Excelu (SelectionChange, Change) provádět nějaké akce a následnou změnu buněk, nebo jejich opravu. Tím, že v těle procedury události změníte obsah buňky, můžete spustit cyklus, kdy se stále znovu a znovu vracíte do události, protože se událost vyvolá vždy při změně znovu.

Řešení je velice jednoduché. Použijte vždy před jakoukoliv změnou vlastnost EnableEvents, která dočasně vypne zpracování událostí objektu a umožní vám provést změny bez nového vyvolání události.

Syntaxe:
Application.EnableEvents = True Zapne zpracování událostí
Application.EnableEvents = False Vypne zpracování událostí

Příklad:
Uvedu příklad, kdy ověřuji data v buňce Excelu, a pokud nejsou validní, nedovolím opustit buňku, dokud validní nebudou. Validní data jsou možná pouze dvojího typu, a to:
  a) Prázdná buňka
  b) Číslo od 2 do 5

Spusťte Excel a vytvořte nový sešit.
Spusťte Microsoft Visual Basic for Application.Spustí se kombinací kláves (ALT+F11) z Excelu.
Poklikejte myší na objekt List1 (levá strana strom) a do kódu objektu vložte následující kód.

Private valRow As Long
Private valCol As Long

Private Sub Worksheet_Change( _
          ByVal Target As Range)
  'Jen pro sloupec 1, radek 1
  If Target.Row = 1 And _
     Target.Column = 1 Then
    If Len(Target.Value) = 0 Then
      valRow = 0
      valCol = 0
    ElseIf IsNumeric(Target.Value) Then
       If CLng(Target.Value) > 1 And _
          CLng(Target.Value) < 6 Then
         valRow = 0
         valCol = 0
       Else
         valRow = Target.Row
         valCol = Target.Column
       End If
    Else
      valRow = Target.Row
      valCol = Target.Column
    End If
  Else
    valRow = 0
    valCol = 0
  End If
End Sub

Private Sub Worksheet_SelectionChange( _
                    ByVal Target As Range)
  If valRow <> 0 Then
    Application.EnableEvents = False
    Excel.ActiveSheet.Cells(valRow, _
                       valCol).Select
    Application.EnableEvents = True
  End If
End Sub

Snad vám tento trik opět trošku pomůže při vaší práci. Použitelné pro Word, Excel, Outlook, Access. Testováno na verzích aplikací Ex2000, W2000.




Příspěvky ke článku:



© Swit.cz, Marek Kočí 2003