Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1000to1004
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Welche Programmierung ist besser?

Welche Programmierung ist besser?
20.08.2008 10:01:39
Richard
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

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Welche Programmierung ist besser?
20.08.2008 10:23:07
Rocky
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

AW: Welche Programmierung ist besser?
20.08.2008 10:39:00
Rudi
Hallo,
das Ausblenden der Register verhindert nicht den Zugriff auf die Tabellen. Schon mal was von strg+PageUP/ PageDown gehört?
Gruß
Rudi

AW: Welche Programmierung ist besser?
20.08.2008 10:50:12
Richard
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

Anzeige
AW: Welche Programmierung ist besser?
20.08.2008 12:02:24
hary
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

AW: Abweichung vom Thema.
20.08.2008 12:13:53
Richard
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

Anzeige
AW: Abweichung vom Thema.
20.08.2008 12:21:01
Rudi
Hallo,
ich würde 2) bevorzugen.
Gruß
Rudi

AW: Abweichung vom Thema.
20.08.2008 12:52:00
Richard
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

AW: Abweichung vom Thema.
20.08.2008 13:12:24
Rudi
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

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige