Microsoft Excel

Herbers Excel/VBA-Archiv

Welche Programmierung ist besser?

Betrifft: Welche Programmierung ist besser? von: Richard
Geschrieben am: 20.08.2008 10:01:39

Hallo Excel-VBA-Gemeinde,

ich weiß jetzt, wie man per VBA eigene Menüs (CommandBars) erstellen lässt und wie man die Standardexcelmenüs ausblendet.

Ich habe eine Arbeitsmappe mit vielen Tabellen, so ca. 30. Diese Tabellen sollen aber nicht über die Reiter(Blattregisterkarten) unten zugänglich gemacht werden. Diese Registerkarten verstecke ich sogar mit "ActiveWindow.DisplayWorkbookTabs = False" im Open-Ereignis des Workbooks. Zusätzlich verstecke ich die Standardmenüs von Excel im selben Ereignis. Mit einem selbstgestrickten Menü soll der Zugriff auf manche Tabellen ermöglicht werden, auf manche aber auch nicht. Jede Tabelle soll aber ein eigenes Menü haben.

Was ist nun besser? Noch am Anfang im Workbook_Open-Eregnis alle Menüs zu erstellen. Und dann jeweils mit dem Worksheets_Activate-Ereignis das Menü einzublenden. Oder sollen die Menüs erst im Worksheets_Activate-Ereignis erstellt werden.

Der Witz ist jedoch, dass jedes Menü speziell nur für ein Tabellenblatt bestimmt ist, es dürfen auch keine anderen dabei sein. Das bedeutet also, im Fall 1, muss beim verlassen bzw. beim aktivieren jedes Blattes das vorherige Menü unsichtbar gamacht werden. Im Fall 2 muss es ganz gelöscht werden, damit wenn man es wieder aktiviert auch wieder erstellen kann.

Aus persönlich Logik würde ich den Fall 1 vorziehen. Aber da Ihr nun doch mehr Erfahrung habt, könnt ihr mir vielleicht sagen, was schneller wäre und evtl. auch weniger Code in Anspruch nehmen würde.

Beim Beenden von Excel, in dem BeforeClose-Ereignis sollen natürlich alle eigenen Menüs gelöscht werden und die Standardmenüs von Excel sollen auch wieder in den Ursprungszustand gestellt werden.

Ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt. Vielen Dank schonmal für Eure Antwort.

Mit freundlichen Grüßen

Richard

  

Betrifft: AW: Welche Programmierung ist besser? von: Rocky
Geschrieben am: 20.08.2008 10:23:07

Hallo,

und wenn du erstmal alle anzeigen lässt aber den Zugriff steuerst? (grau hinterlegen)

Application.CommandBars("DEINESYBOLLEISTE").Controls(1).Enabled = False 'bzw True

Ich weiß das das noch keine Antwort auf deine Frage ist, aber vielleicht hilft es ja.

Gruß Rocky


  

Betrifft: AW: Welche Programmierung ist besser? von: Rudi Maintaire
Geschrieben am: 20.08.2008 10:39:28

Hallo,
das Ausblenden der Register verhindert nicht den Zugriff auf die Tabellen. Schon mal was von strg+PageUP/ PageDown gehört?

Gruß
Rudi


  

Betrifft: AW: Welche Programmierung ist besser? von: Richard
Geschrieben am: 20.08.2008 10:50:12

Hallo Rudi,

nee,... das mit der Zugriffsverhinderung habe ich auch so nicht gemeint. Man soll ja auf Tabellen zugreifen können. Ich will nur nicht, dass man die Tabellenblätter sieht und Sie direkt auswählt. Dazu sollen ja meine eigene Menüs sein.

Ich denke mal, dass ich die Zugriffsverhinderung mit Worksheets(1).Visible= xlSheetVeryHidden erreichen könnte. Oder hast du was besseres?

MfG
Richard


  

Betrifft: AW: Welche Programmierung ist besser? von: hary
Geschrieben am: 20.08.2008 12:02:24

Hallo Richard
Ja, dann ist das Blatt nicht sichtbar.
Ich kannDir auch schon die Antwort von Rudi sagen!!!! Hab ich von ihm gelehrnt!!

: nichts ist in Excel sicher
Gruss Hary


  

Betrifft: AW: Abweichung vom Thema. von: Richard
Geschrieben am: 20.08.2008 12:13:53

Hallo,

das alles sind zwar nette Infos von euch aber sie beantworten noch nicht wirklich meine eigentliche Frage.

Ich wollte eigtlich nur wissen, was schneller bzw. effizienter und Codesparender ist.

Fall 1) Im Workbook_Open-Ereignis alle meine Menüs erstellen und die Sichtbarkeit dieser dann vom Worksheet_Activate/Deaktivate abhängig mache. Beim Schließen im Workbook_BeforeClose-Ereignis dann alle Menüs wieder löschen.

Fall 2) Das Menü soll erstellt werden im Worksheet_Activate-Ereignis und im Worksheet_Deactivate-Ereignis wieder gelöscht werden.

Vielen Dank!

Mit freundlichen Grüßen

Richard


  

Betrifft: AW: Abweichung vom Thema. von: Rudi Maintaire
Geschrieben am: 20.08.2008 12:21:01

Hallo,
ich würde 2) bevorzugen.

Gruß
Rudi


  

Betrifft: AW: Abweichung vom Thema. von: Richard
Geschrieben am: 20.08.2008 12:52:31

Hmm...

... wie schon gesagt, ich begann schon den Fall 1 zu programmieren. Aber wenn du den 2. bevorzugt, dann werd ich das eben so machen.
Kannst du mir denn begründen, warum du den 2. Fall bevorzugen würdest?

Danke!

Gruß
Richard


  

Betrifft: AW: Abweichung vom Thema. von: Rudi Maintaire
Geschrieben am: 20.08.2008 13:12:24

Hallo,

Kannst du mir denn begründen, warum du den 2. Fall bevorzugen würdest?


Ich finde das Handling einfacher. Die Commandbar kann immer den gleichen Namen haben. Das Erstellen/Löschen würde ich nicht über Worksheet_Activate(), sondern zentral über Workbook_Sheetactivate() machen und immer die gleiche Prozedur mit unterschiedlichen Parametern nehmen. Im Workbook_beforeclose() muss man nur 2 Commandbars löschen anstatt 31.

Gruß
Rudi


 

Beiträge aus den Excel-Beispielen zum Thema "Welche Programmierung ist besser?"