Přeskočit navigaci | Přeskočit na novinky

Nový videokurz na Seduo: Excel pro začátečníky

     

Jste zde: Úvodní stránka » excel » vba-listy-sheet » Worksheet_BeforeRightClick-Worksheet_BeforeDoubleClick

Události listu Worksheet_BeforeRightClick, Worksheet_BeforeDoubleClick


Kromě klasické provedení požadované akce, změnte pomocí události předvidatelné chování Excelu - například zamezte zobrazování kontextové nápovědy při pravém kliku myší.

Úvodem do Worksheet_BeforeRightClick, Worksheet_BeforeDoubleClick

Jako všechny události po jejím "odchycení" bude provedena požadovaná akce (například zobrazení dialogového okna. Pokud ale nastavíte argument Cancel na hodnotu True můžete zrušit přednastavené chování Excelu (napřílad nezobrazit kontextovou nabídku). Protože nastane událost a teprve po ní se provádí ono zobrazování kontextové nabídky, takže v události můžete nastavit její nezobrazování.

S těmito nastaveními opatrně, může znást nejen uživatelé, kteří si budou myslet, že jim excel nefunguje, ale může způsobit problémi i Vám pokud budete hledat případnou chybu v kódu.

Ukázkový kód (1) Worksheet_BeforeRightClick

Nejednodužší ukázka jednoduše deaktivuje zobrazení kontextového menu po kliku na pravým tlačítkem myši.

Private Sub Worksheet_BeforeRightClick(ByVal target as Range, ByRef cancel as Boolean) ' cancel - provede deaktivaci cancel = True End Sub

Ukázkový kód (2) Worksheet_BeforeRightClick

Při kliku pravým tlačítkem myši se objeví dialogové okno. Poté "vyskočí" kontextové menu pro danou buňku.

Private Sub Worksheet_BeforeRightClick(ByVal target as Range, ByRef cancel as Boolean) MsgBox ("Byl proveden klik pravým tlačítkem myši!") End Sub

Ukázkový kód (3) Worksheet_BeforeRightClick

Při kliku pravým tlačítkem myši přičtu do dané buňky hodnotu 2 a navíc nezobrazím kontextové menu.

Private Sub Worksheet_BeforeRightClick(ByVal target As Range, ByRef cancel As Boolean) ' Klikem do buňky přičtu 2 Dim HodnotaBunky As Integer HodnotaBunky = target.Value HodnotaBunky = HodnotaBunky + 2 target.Value = HodnotaBunky ' nezobrazím dialogové okno cancel = True End Sub

Ukázkové kódy pro Worksheet_BeforeDoubleClick

Po dvojkliku se v buňce nezobrazí kurzor

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True End Sub

Po dvojkliku obdržíte dialogové okno

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) MsgBox ("Byl proveden dvojklik pravým tlačítkem myši!") End Sub

Kombinace předchozích

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) MsgBox ("Byl proveden dvojklik pravým tlačítkem myši!") Cancel = True End Sub

Závěrem

Další informace o událostech listu jsou v souhrném článku: Události listu v MS Excel VBA - Pro další náměty k čemu využíváte událost SelectionChange jsou k dispozici komentáře.

Článek byl aktualizován: 01.11.2014 14:21

Odměna

Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.


Pavel Lasák

Pavel Lasák - autor webu

Microsoft Office (Word, Excel, PowerPoint) se věnuji od roku 2006. Své vědomosti a zkušenosti dávám k dispozici na různých školeních a konzultacích, ale také na tomto webu. K dispozici na tomto webu je mnoho návodu, tipů a triků včetně desítek různých šablon.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil

Doporučte tento článek přátelům

Pokud vám článek pomohl, případně si myslíte, že může pomoci i někomu dalšímu, budu rád když jej sdílením doporučíte přátelům - děkuji:



Komentáře


Martin

Přidáno: 21.08.13 14:30

Dobrý den. pro ty koho by zajmalo jak nastavit danou událost jen pro určitou oblast(oblasti). Osobně ještě nevim co ten příkaz ověřuje a vrací, ale funguje :) Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) If Not Intersect(Target, Range("B2:B25, L2:L25")) Is Nothing Then 'Váš kód pro danou oblast End If End Sub

Pavel Lasák

Přidáno: 21.08.13 20:17

To Martin: Děkuji za doplnění.

Vyplnění dat

Přidáno: 28.02.14 15:12

Dobrý den, jsem ve VBA úplný nováček, nikdy jsem v tom nedělal. Problém: Na List1 mám tabulku, v řádcích jsou údaje z pokladního deníku a já potřebuji, aby se např. po kliknutí na tlačítko / buňku vypsaly hodnoty do List2 - výdajový doklad a nebo pokud je to příjem, tak do List3 - příjmový doklad. Už nad tím sedím půl den a nic. Děkuji mnohokráte za pomoc!

Pavel Lasák

Přidáno: 01.03.14 19:56

To Vyplnění dat: Musí být nějaký příznak jak má excel poznat kam psát data. Do dalšího sloupce vyplnit, zda se jedna o příjem/výdej.

Andrea

Přidáno: 06.01.16 10:20

Dobrý den, prosím o radu. Ve VBA jsem amatér, proto nevím, proč mi makro nechce fungovat. Mám na Listech udělané jednotlivé přehledy mých dat - něco jako One pager. Pro vyhodnocení jsou na 3 místech tohoto přehledu vloženy vždy 4 obrázky. Potřebuji, aby se po kliknutí na daný obrázek rozsvítil (tím, že kolem něj bude "záře") a při dalším kliknutí zase zhasl. Nejlépe, aby z té čtveřice obrázků vždy mohl svítit jen jeden(něco jako semafor). Prozatím jsem "vymyslela" toto: Sub Makro2() ' Makro2 Makro If ActiveSheet.Shapes.Range(Array("Picture 49")).Select Selection.ShapeRange.Glow.Radius = 0 With Selection.ShapeRange.Glow .Color.ObjectThemeColor = msoThemeColorAccent2 .Color.TintAndShade = 0 .Color.Brightness = 0 .Transparency = 0.599999994 .Radius = 18 End With Then ActiveSheet.Shapes.Range(Array("Picture 49")).Select Selection.ShapeRange.Glow.Radius = 0 With Selection.ShapeRange.Glow .Color.ObjectThemeColor = msoThemeColorAccent2 .Color.TintAndShade = 0 .Color.Brightness = 0 .Transparency = 0 .Radius = 0 End With End If If ActiveSheet.Shapes.Range(Array("Picture 49")).Select Selection.ShapeRange.Glow.Radius = 0 With Selection.ShapeRange.Glow .Color.ObjectThemeColor = msoThemeColorAccent2 .Color.TintAndShade = 0 .Color.Brightness = 0 .Transparency = 0 .Radius = 0 End With Then ActiveSheet.Shapes.Range(Array("Picture 49")).Select Selection.ShapeRange.Glow.Radius = 0 With Selection.ShapeRange.Glow .Color.ObjectThemeColor = msoThemeColorAccent2 .Color.TintAndShade = 0 .Color.Brightness = 0 .Transparency = 0.599999994 .Radius = 18 End With End If End Sub Jak říkám, bohužel mi toto makro nefunguje. Fungovalo, než jsem začla podmínkovat s IF a THEN (což jsem našla zde a děkuji za to), ale nevím asi úplně přesně jak to použít. Děkuji za případné rady.

Pavel Lasák

Přidáno: 06.01.16 21:34

To Andrea: Nejprve je potřeba reakce na událost klik na obrázek: Sub MakroReagujeNaKliknutiNaObrazek_ImageClick() Dim sht As Worksheet Dim shp As Shape Set sht = ActiveSheet Set shp = sht.Shapes(1) ' spustení příslušného makra shp.OnAction = "Makro1" End Sub pak správně použít It then elseif

Roman

Přidáno: 14.08.16 08:51

Dobrý den, asi mám dlouhé vedení, ale pořád mi to nefunguje. Potřeboval bych makro, které se aktivuje, když udělám double-click na jakoukoliv buňku sloupce "G". Můžete mi prosím poradit jak to mám zapsat? Mimochodem, zkoušel jsem všechny vzorové makra na double-click, ale nefunguje mi žádné. :-(


Přidání nového komentáře

Poznámka: Z časových důvodu není v mých sílách zodpovědět všechny dotazy. Děkuji za pochopení.




(vlož číslo padesátpět)

Z bezpečnostních důvodu dočasně nemůžete použít HTML značky, kromě <code> a </code> (pro vkládání VBA kódu). Děkuji za pochopení.
Děkuji, za Vaše komentáře.

Za obsah komentářů neodpovídám, jelikož jsou komentáře publikovány ihned po jejich napsání čtenářem. Toto nemohu nijak ovlivnit. Přesto si vyhrazuji možnost jakýkoli neslušný komentář smazat bez udání důvodu. V komentářích si tykáme. ;-)






Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Newsletter

Přihlaste se odběru novinek a získejte:
Ebook zdarma -
10 kroků ke zvládnutí (Word, Excel, PowerPoint)
Šipka Kniha 3D Více o ebooku ...

TOPlist Licence Creative Commons webarchiv rss XML

Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2016 | 5401

Tento web zatím neprošel jazykovou korekturou. Beta verze redakčního systému.