Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

VBA Excel 2013 ukrycie wszystkiego poza kursorem

5050piotr 15 Kwi 2015 12:48 837 2
  • #1 15 Kwi 2015 12:48
    5050piotr
    Poziom 9  

    Witam,
    Po otwarciu skoroszytu z makrem jak niżej chciałbym, żeby użytkownik nie miał dostępu do wymienionych w makrze elementów sterujących arkusza i aplikacji, jak również menu i wstążki. Tak się teoretycznie dzieje, ale do czasu.
    Do czasu, aż podwójnie kliknie na pasek tytułu aplikacji. Wtedy niestety odkrywa się i menu i kompletna wstążka. Nie znalazłem rozwiązania, stąd ten post.
    Z góry dzięki za pomoc.

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0 2
  • #2 15 Kwi 2015 20:56
    JRV
    Specjalista - VBA, Excel

    .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"", ""False"")"

    0
  • #3 16 Kwi 2015 10:40
    5050piotr
    Poziom 9  

    JRV napisał:
    .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"", ""False"")"

    Przecież wiersz z tą funkcją znajduje się w procedurze którą zamieściłem w moim poście. Napisałem też, że makro ukrywa to co ma ukryć, natomiast szukam rozwiązania problemu powstającego wtedy, kiedy użytkownik podwójnie kliknie na pasek tytułu Excela - wtedy się wstążka "odkrywa", mimo iż programowo jej widoczność otrzymała wartość False. W każdym razie dzięki za chęć pomocy.
    ==============
    Ponieważ czas mnie goni, dalej intensywnie szukałem w necie pomocy. Wydaje mi się, że jednoznacznego rozwiązania brak (można usunąć pasek tytułu Excela za pomocą funkcji API, ale nie o to chodzi), wiele wątków na różnych forach kończy się niczym. Panuje opinia, że po wprowadzeniu wstążki i bajerów Excela 2010 a następnie 2013 nie do końca dopracowano kompilator. Jeśli do tego dodać trzy użytkowane w tej chwili systemy - Vista, 7 i 8, to powstaje niekiedy taki układ, że jednemu coś działa, a drugiemu nie. Póki co zastosowałem takie rozwiązanie: makro z mojego pierwszego posta użyłem w dwóch procedurach jednocześnie: Worksheet_Open i Worksheet_Activate . Analogicznie procedurę "odrywającą", czyli z wartościami True zamiast False użyłem też jednocześnie w dwóch procedurach Worksheet_BeforeClose(Cancel As Boolean) i Worksheet_Deactivate. Zmieniłem też kolejność wierszy,
    najpierw
    .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
    a dopiero potem
    .DisplayFullScreen = True
    Tego co piszę, nie próbuję uzasadnić, wygrzebałem takie myki w necie i toto działa.
    Jeśli nie rozwinie się koło tego jakaś merytoryczna dyskusja, to wątek jutro można będzie zamknąć.

    0