ich würde gern in Excel soetwas wie ein Menü einbinden, d.h. auf der linken Seite wird ein Menü dauerhaft angezeigt, und bei einem jeweiligen Klick wird ein anderes Excelsheet auf der linken Seite angezeigt.
Habe es schon mit Menüpunkt „Fenster–>teilen“ versucht, jedoch wird im geteilten Fenster immer das gleiche Blatt angezeigt.(bzw. in beiden halt das selbe)
der Makrorecorder hilft da leider auch ni viel…
Kann man, bzw. wenn ja wie, den Inhalt des geteilten Bildschirms ändern?
Wie das mit einem Frame gehen soll, da habe ich momentan keine Vorstellung davon. Hier aber etwas, das Dich möglicherweise interessieren könnte: Eine benutzerdefinierte Symbolleiste
Wenn Du das Beispiel ausprobieren möchtest, kannst Du folgenden Code ins Codefenster von „DieseArbeitsmappe“ kopieren:
Private Sub Workbook\_Activate()
Application.CommandBars("MeineEigene").Enabled = True
End Sub
Private Sub Workbook\_BeforeClose(Cancel As Boolean)
WorkbookClose = True
End Sub
Private Sub Workbook\_Deactivate()
Application.CommandBars("MeineEigene").Enabled = False
If WorkbookClose = True Then
Application.CommandBars("MeineEigene").Delete
End If
End Sub
Private Sub Workbook\_Open()
Toolbar
End Sub
Danach müßtest Du noch ein Modul einfügen, in das der nachstehende Code gehört:
Public WorkbookClose As Boolean
Public tbrAppName As CommandBar
Public mnu1 As CommandBarControl
Public mnu11 As CommandBarButton
Public mnu12 As CommandBarButton
Public mnu2 As CommandBarControl
Public mnu21 As CommandBarButton
Public mnu22 As CommandBarButton
Sub Toolbar()
Set tbrAppName = CommandBars.Add(Name:="MeineEigene", Position:=msoBarLeft, Temporary:=False)
With tbrAppName
Set mnu1 = .Controls.Add(Type:=msoControlPopup, Before:=.Controls.Count + 1)
With mnu1
.Caption = "Menü1"
Set mnu11 = .Controls.Add(Type:=msoControlButton, ID:=1851)
mnu11.Style = msoButtonCaption
mnu11.Caption = "Button1.1"
mnu11.OnAction = "Button11"
Set mnu12 = .Controls.Add(Type:=msoControlButton, ID:=1851)
mnu12.Style = msoButtonCaption
mnu12.Caption = "Button1.2"
mnu12.OnAction = "Button12"
End With
Set mnu2 = .Controls.Add(Type:=msoControlPopup, Before:=.Controls.Count + 1)
With mnu2
.Caption = "Menü2"
Set mnu21 = .Controls.Add(Type:=msoControlButton, ID:=1851)
mnu21.Style = msoButtonCaption
mnu21.Caption = "Button2.1"
mnu21.OnAction = "Button21"
Set mnu22 = .Controls.Add(Type:=msoControlButton, ID:=1851)
mnu22.Style = msoButtonCaption
mnu22.Caption = "Button2.2"
mnu22.OnAction = "Button22"
End With
.Visible = True
End With
End Sub
Sub Button11()
MsgBox "Button 1.1 wurde geklickt"
End Sub
Sub Button12()
MsgBox "Button 1.2 wurde geklickt"
End Sub
Sub Button21()
MsgBox "Button 2.1 wurde geklickt"
End Sub
Sub Button22()
MsgBox "Button 2.2 wurde geklickt"
End Sub
Dann die Datei einmal speichern, Excel beenden und die Datei wieder öffnen.
Es erschein dann eine links fixierte Symbolleiste mit 2 Menüs und 4 Buttons.
ich würde gern in Excel soetwas wie ein Menü einbinden, d.h.
auf der linken Seite wird ein Menü dauerhaft angezeigt, und
bei einem jeweiligen Klick wird ein anderes Excelsheet auf der
linken Seite angezeigt.
Habe es schon mit Menüpunkt „Fenster–>teilen“ versucht,
jedoch wird im geteilten Fenster immer das gleiche Blatt
angezeigt.(bzw. in beiden halt das selbe)
Kann man, bzw. wenn ja wie, den Inhalt des geteilten
Bildschirms ändern?
Du könntest ein zweites Fenster darstellen lassen (mit Fenster/Neu) und in diesem dann ebenfalls ein Blatt deiner Datei anzeigen. Wenn Du die Fenster dann nebeneinander anordnest kannst Du die Grenzen so einstellen, dass das eine schmal und das andere breiter angezeigt wird.
Die Steuerung der Anzeige der Tabellenblätter kannst Du dann per VBA vornehmen.
Alternativ könntest Du auch eine Symbolleiste mit Buttons drauf erzeugen und diese am linken Bildschirmrand andocken, dann bist Du völlig unabhänig von den Fenstern.
Ändert sich der Inhalt der Tabellen, die du dir einzeigen lassen willst?
Ich hätte noch eine - wahrscheinlich unkonventionelle - Methode
Erstelle dir als Tabelle1 deine Ansichtstabelle und richte dir dort das Fenster teilen ein. Das Menü könntest du ja zum Beispiel in Spalte A hineinschreiben. Jede Tabelle, die du dir nun rechts vom Menü anzeigen lassen möchtest erstellst du in einem Extra-Tabellenblatt.
Wenn du nun in deiner Übersichtstabelle die Tabelle2 sehen möchtest, lässt du dir einfach den ganzen Inhalt von Tabelle2 in deine Übersichtstabelle kopieren (ab Spalte B wenn in Spalte A das Menü ist). Das hängt aber natürlich sehr stark davon ab, was in Tabelle2 drin steht. Probleme kann es natürlich geben, wenn du Formel oder dergleichen hast, die du in der Übersicht benutzen möchtest. Ansonsten könnte das wie folgt aussehen:
Sub tab2_zeigen()
Sheets(2).Range(„A1:AA124“).Copy 'Tabelle2 ist im Tabellenblatt 2
Sheets(1).Range(„B1“).PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End Sub
Hab ich mir grad so überlegt, müsste funktionieren, wobei hier wirklich nur die Werte kopiert werden. Range(„A1:AA124“) gibt dabei den Bereich in Tabelle2 an, den du dir ansehen möchtest - müsste angepasst werden. Insgesamt natürlich recht unflexibel.
vielen Dank für eure Antworten…hätte gar nicht gedacht, dass es gleich so viele verschiedene Antworten gibt…
zur Idee von Karsten:
Idee find ich erstmal klasse. wäre jetzt nur die Frage, ob es möglich ist, in dem Menü noch Unterpunkte anzuzeigen bzw. möglich wird es schon sein, nur wie……brauche nämlich mehrere Ebenen im Menü…hab schon selber eins gebaut, was aussieht und funktioniert wie das im SAP…also mit nach unten aufklappen und so…(kann leider kein Bild reinstellen…)…aber wirklich klasse Idee, Danke noch mal…
zur Idee von Thomas
genau das habe ich gestern auch versucht……mein Problem ist nur die beiden Fenster per VBA so zu ändern, dass die Titelzeile fehlt und möglichst noch der Fensterrand…also so, dass wirklich nur der inhalt sichtbar ist…weiter weiß ich dann auch leider nicht, wie ich den Inhalt von dem neu erzeugten Fenster per VBA ändere…vielleicht hast du ja noch mal so ne gute Idee…Danke dir auch noch mal dafür…
zur Idee von Aiko
auch die Idee ist gut…ist mir auch schon in den Sinn gekommen nur habe ich zum Bsp. in den Tabellen, die ich anzeigen lassen will auch Diagramme mit optionbuttons und anderen Steuerelementen, was ziemlich aufwendig wäre, das zu kopieren…weiterhin habe ich auch Formeln wie Bereich.Verschieben() welche sehr verschachtelt sind um in den Diagrammen einzelne Datenreihen auszublenden…
da fällt die Idee leider komplett raus aber Danke auch dir, Idee war ja auch super…
Du kannst den kompletten Menü-Baum immer tiefer kaskadieren, indem Du einem CommandBarControl vom Typ msoControlPopup ein weiteres CommandBarControl vom Typ msoControlPopup hinzufügst und wieder und wieder. Am Ende kommt natürlich dann ein CommandBarButton oder möglicherweise auch eine CommandBarComboBox. Du kannst den Schaltflächen auch Bilder verpassen, mit Shortcuts versehen usw. usw.
Falls Du Dich für eine solche Variante entscheidest, wirst Du dich sicherlich über die angenehme Bedienbarkeit Deiner Datei freuen. Ich kann es jedenfalls nur empfehlen.
vielen Dank für deine Antwort und sorry für die späte Frage…habe an den We´s kein Internet.
habe mich heute wieder rangesetzt und habe wohl im Code irgendwas falsch gemacht.
Public Sub toolbar()
Set cmdbar = CommandBars.Add(„Menü“, msoBarLeft, , False)
With cmdbar
Set men1 = .Controls.Add(msoControlPopup)
With men1
.Caption = „Men1“
With men11
Set men11 = .Controls.Add(msoControlPopup)
With men11
.Caption = „Men11“
Set men111 = .Controls.Add(msoControlPopup)
With men111
.Caption = „Men111“
Set men1111 = .Controls.Add_(msoControlButton)
men1111.Caption = „Men1111“
Set men1112 = .Controls.Add_(msoControlButton)
men1112.Caption = „Men1112“
End With
Set men112 = .Controls.Add_(msoControlButton)
men112.Caption = „Men112“
End With
Set men12 = .Controls.Add(msoControlButton)
men12.Caption = „Men12“
End With
End With
Set men2 = .Controls.Add(msoControlButton)
men2.Caption = „Men2“
End With
End Sub
Die Deklaration ist:
Public cmdbar As CommandBar
Public men1 As CommandBarControl
Public men11 As CommandBarControl
Public men12 As CommandBarControl
Public men111 As CommandBarControl
Public men112 As CommandBarControl
Public men1111 As CommandBarButton
Public men1112 As CommandBarButton
Public men2 As CommandBarButton
ich sollte doch eigentlich (wenn ich noch ein Untermenü haben will) der Commandbarcontrol vom Typ msocontrolpopup eine weitere Commandbarcontrol vom Typ msocontrolpopup zuweisen.
Ich habe da wohl in der Deklaration was falsch gemacht.
Der Fehler ist: ungültiger Prozeduraufruf oder ungültiges Argument und zwar in der Zeile: Set cmdbar = CommandBars.Add(„Menü“, msoBarLeft, , False)
Verstehe leider den Fehler nicht…Würde mich über Hilfe sehr freuen. Danke schonmal wieder im Voraus…
habs jetzt selber noch hinbekommen…hatte erstens vergessen die leiste auf Visible zu stellen u ausserdem hab ich vergessen die Leiste wieder zu löschen…also alles gefunden, jetzt funzts…
hab nochmals dank…werde weiter an deiner Idee arbeiten…