
Hledáním v moudrých knihách jsem zjistil:
Místní nabídky jsou obsahem kolekce CommandBars s tím, že jejich typ je msoBarTypePopup. Dostupnost místní nabídky lze nastavit pomocí její vlastnosti Enabled.
Pokusně jsem vypnul všechny své místní nabídky. Ověřil jsem tím, že se místní nabídka na ouškách opravdu přestala zobrazovat. Takže jeden ze zakázaných prvků to byl.
Vypsal jsem si jména zakázaných prvků, kterých bylo 65. Bohužel jsem mezi jmény nenašel žádné takové, které by prozradilo příslušnost k ouškům. Nezbylo, než zkoušet ta nic neříkající. Nakonec jsem objevil CommandBar("Select") s číslem 124, který tu místní nabídku obsluhuje.
Moje hledání bylo ještě delší než moje povídání. Výsledek už je velmi stručný:
CommandBars(124).Enabled = False
To vypadá dobře jen do chvíle, dokud spolu s CTRL neklepnu na ouško. V tom okamžiku zase místní nabídka ožije. To mne otrávilo. Jestli někdo chce v mém zkoumání pokračovat, má možnost. Mně to přestalo bavit...

Tiež som hľadal možnosť, ako to poriešiť. Okrem CommandBars, som sa snažil vytvoriť aj triedu z Objektu Worksheet alebo Workbook, či nebude prístupný nejaký OnClick, márne. Vypnúť položku "Vybrať všetky hárky" z kontextového menu uška, sa dá, je to položka ID 946. Ale zatiaľ jediné čo ma napadlo akotak funkčné je napr. každú sekundu tikať Timer, kde skontrolujete počet označených hárkov, ak je väčší ako 1, Select-nete napr. prvý. Takže ostane užívateľovi jeho snaha označená max 1 sekundu. Samozrejme ak nepovolí makrá tak mu v tom nič nezabráni. Povolenie makier je na inú debatu, ktorá tu nedávno tiež prebehla.

Vovka: Díky za nakopnutí. S tou hodnotou "124" mi to nefachčí, ale "Ply" je funkční a drží. Snažím se ještě zakázat kombinaci CTRL + ClickLeftMouse, ale OnKey "^{1}","" je nefunkční.
Elninoslov: tak to zatím řeším v událostních procedůrách "Change" a "SelectionChange", ale chtěl jsem to zkusit jinak. I tak oběma díky.

No veď práve to je to. Ako odchytiť ľavý klik na uškách. Všetky návody sa točia iba okolo pravého (kontextové menu).

Na https://msdn.microsoft.com/en-us/library/aa243025(v=vs.60).aspx jsou kódy.
Pro "vbKeyLButton" je "1". Ostatní mi fungují, ale ty pro mouse NE.

Kódy tam sú, ale odchytenie ľkliku myši, je odchytenie udalosti, čiže OnAction, a to už také jednoduché nieje. Skúsim možno niekedy hák na globálny ľklik, s porovnaním oblasti ušiek (ak bude zistiteľná)... Uvidíme.

Přece jenom se k tématu vracím. Problém nevhodného výběru listů mne trápí stejně jako to trápí kp57. Tam, kde je to klíčové, tam opravdu ouška schovám a přechod na jiný list řeším dialogem na uživatelském formuláři. Tím mohu omezit výběr na jediný list a získávám prostor pro dodatečné logické vyhodnocení vhodnosti výběru listu.
Dotaz ale podobné řešení hned v úvodu vylučuje. Podle mne tím vylévá vaničku i s dítětem...

Ještě jednu věc jsem si uvědomil. Přístup k výběru listů podporují hned dvě místní nabídky: ta známější se otevře po pravém kliknutí na ouška. Tu druhou otevřu pravým kliknutím na posuvníky oušek úplně vlevo vedle oušek. Takže bych měl chytat dva zajíce najednou!

Nejsem si jistý, zda lze spolehlivě ošetřit. Částečně souhlasím s Vdovkou.
Tam, kde je to klíčové, tam opravdu ouška schovám a přechod na jiný list řeším dialogem na uživatelském formuláři.
Skrytí oušek ale nestačí, pokud někdo použije klávesovou zkratku CTRL+SHIFT+PgUp(PgDown) nebo má napsán doplněk na výběr listů (výběr listů je celkem častý dotaz).
Takže já v tomto případě listy skrývám (VeryHidden). Způsob přechodu na další list si pak musíte zvolit sami.
Druhou možností je nic nezakazovat a testovatIf Not ActiveWindow.SelectedSheets.Count = 1 Then
Zakazování nabídek nebo zjišťování levého kliku mi moc bezpečné nepřijde - ale nic jsem v tomto směru nezjišťoval. Musel byste řádně odladit vliv na ostatní spuštěné sešity nebo v případě použití API vlastně i systém.
Kontrola pomocí Timeru je také cesta, kterou bych nešel (nabízí se ve spojení se SelectedSheets), protože v době běhu kódu je nedostupná práce z listem.