Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
772to776
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
772to776
772to776
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Buttons ueber makro erzeugen

Buttons ueber makro erzeugen
20.06.2006 14:37:19
Christian
Hallo VBA Experten
Ich hab ein Workbook mit ziemlich vielen Sheets. Im Workbook sind sowohl "Workshheets" als auch "Charts"
Ich moechte nun mit einem Makro ein Uebersichtssheet erstellen.
In diesem Sheet soll in Spalte B, ab Zeile 5, die Namen der Worksheets stehen. Hinter dem Namen soll in spalte
C ein Button erzeugt werden. Wenn man auf diesen Button klickt soll das sheet (Sheetname aus spalte B) geoeffnet werden.
In Spalte E,ab Zeile 5, sollen die Sheetnamen der Diagramme stehen. Hinter einem Sheetnamen soll in Spalte F ebenfalls
ein Button erzeugt werden.
Ausserdem soll in jedem Sheet, ausser dem "Uebersichts"sheet ein Button an der stelle A5 gneriert werden. Klickt man diesen
button an soll das Uebersichts sheet erscheinen.
Hat jemand einen plan wie ich das machen kann?
vielen dank
gruss
Christian

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Buttons ueber makro erzeugen
20.06.2006 15:15:07
u_
Hallo,
musst du ein bisschen anpassen.
In ein Modul:
Sub Inhaltsverzeichnis()
Dim x As Integer, y As Integer, h As Integer, b As Integer, Btn As Object, _
sh As Integer, shp As Shape, wshInhalt As Worksheet
If ActiveWorkbook Is Nothing Then Exit Sub
Application.ScreenUpdating = False
h = 20: b = 100: x = 60: y = 40
'alte Button löschen
If InhaltExists = False Then
Set wshInhalt = Worksheets.Add
With wshInhalt
.Move before:=Sheets(1)
.Name = "_Inhalt_"
End With
End If
Set wshInhalt = Worksheets("_Inhalt_")
On Error Resume Next
For Each shp In Sheets(1).Shapes
If shp.Name Like "btn_*" Then shp.Delete
Next shp
On Error GoTo 0
'neue Buttons einfügen
'button für Aktualisierung
Set Btn = wshInhalt.Buttons.Add(0, 0, b, h)
With Btn
.Name = "btn_refresh"
.OnAction = "Inhaltsverzeichnis"
.Placement = xlFreeFloating
.PrintObject = False
.Characters.Text = "Auffrischen"
End With
For sh = 2 To Worksheets.Count
If Not Worksheets(sh).Visible = xlSheetVeryHidden Then
Set Btn = wshInhalt.Buttons.Add(x, y, b, h)
With Btn
.Name = "btn_" & Format(sh, "000")
.OnAction = "activatesheet"
.Placement = xlFreeFloating
.PrintObject = True
.Characters.Text = Worksheets(sh).Name
End With
'"Zurück"-Button löschen
On Error Resume Next
Worksheets(sh).Shapes("btnBack").Delete
On Error GoTo 0
'"Zurück"-Button auf jedes Blatt
Set Btn = Worksheets(sh).Buttons.Add(0, 0, 20, 15)
With Btn
.OnAction = "Back"
.Characters.Text = "<<"
.Placement = xlFreeFloating
.Name = "btnBack"
End With
y = y + h + 10
End If
Worksheets(sh).Visible = xlSheetHidden
Next sh
x = wshInhalt.Range("e1").Left
y = 40
For sh = 1 To Charts.Count
If Not Charts(sh).Visible = xlSheetVeryHidden Then
Set Btn = wshInhalt.Buttons.Add(x, y, b, h)
With Btn
.Name = "btn_" & Format(sh, "000") + Worksheets.Count
.OnAction = "activatesheet"
.Placement = xlFreeFloating
.PrintObject = True
.Characters.Text = Charts(sh).Name
End With
'"Zurück"-Button löschen
On Error Resume Next
Charts(sh).Shapes("btnBack").Delete
On Error GoTo 0
'"Zurück"-Button auf jedes Blatt
Set Btn = Charts(sh).Buttons.Add(0, 0, 20, 15)
With Btn
.OnAction = "Back"
.Characters.Text = "<<"
.Placement = xlFreeFloating
.Name = "btnBack"
End With
y = y + h + 10
End If
Charts(sh).Visible = xlSheetHidden
Next sh
Set Btn = wshInhalt.Buttons.Add(b + 10, 0, b, h)
With Btn
.Name = "btn_all"
.OnAction = "ShowAll"
.Placement = xlFreeFloating
.PrintObject = True
.Characters.Text = "Alle zeigen"
End With
Application.ScreenUpdating = True
End Sub

Private Sub ActivateSheet()
Dim strNum As String
strNum = ActiveSheet.Shapes(Application.Caller).OLEFormat.Object.Caption
Sheets(strNum).Visible = True
Sheets("_Inhalt_").Visible = False
End Sub


Private Sub back()
Sheets("_Inhalt_").Visible = True
ActiveSheet.Visible = False
End Sub


Private Sub ShowAll()
Dim sh As Object
For Each sh In Sheets
sh.Visible = True
Next
End Sub


Private Function InhaltExists() As Boolean
Dim iCounter As Integer
For iCounter = 1 To Worksheets.Count
If Worksheets(iCounter).Name = "_Inhalt_" Then
Worksheets(iCounter).Move before:=Sheets(1)
InhaltExists = True
Exit Function
End If
Next iCounter
InhaltExists = False
End Function

Gruß
Geist ist geil!
(Dies ist ein allgemeines Statement und nicht an bestimmte Personen gerichtet.)
Anzeige
AW: Buttons ueber makro erzeugen
20.06.2006 15:38:49
fcs
Hallo Christian,
um schnell auf andere Tabellenblätter umschalten zu können, brauch man eigentlich nicht so eine Übersichtstabelle.
Ein Klick mit der rechten Maustaste links unten auf die Pfeile für das Weiterschalten der Blattregister zeigt dir alle Tabellen und Charts an.
Ansonsten ist so eine Übersicht schon möglich. Allerdings würde ich die Buttons in der Übersicht weglassen und einfach per klick auf die Zellen die Tabellen anzeigen. Das läßt sich wesentlich einfacher umsetzen, als jede Menge Buttons zu kreieren, denen dann ja auch noch Code zugewiesen werden muß.
mfg
Franz
Anzeige
AW: Buttons ueber makro erzeugen
20.06.2006 16:28:28
Daniel Eisert
Hallo,
warum so kompliziert, einfach dieses Makro ins Klassenmodul des Sheets mit dem Inhaltsverzeichnisses schreiben, und du kannst mit Doppelklick auf den Sheetname in Spalte B oder Spalte E ins Sheet springen.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Row < 5 Then Exit Sub
If Not (Target.Column = 2 Or Target.Column = 5) Then Exit Sub
If Target(1).Value = "" Then Exit Sub
Sheets(Target(1).Value).Select
End Sub

Den Rücksprung machst du genauso, indem du einen Änhlichen Code ins Klassenmodul der einzelnen Sheets schreibst.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target(1).address = "$A$5" then sheets("Übersicht").select
End Sub

oder nocheinfacher, du setzt in jedes Sheet einen Bezug auf das Sheet("Übersicht").
Dann in den Extras die Direkte Zellbearbeitung deaktiveren und mit einem Doppelklick auf A5 springst du zur Übersicht zurück, ganz ohne Makros.
Gruß, Daniel
Anzeige
AW: Buttons ueber makro erzeugen
20.06.2006 17:48:49
Christian
Wow danke fuer eure tipps.
Das ohne buttons klingt ja deutlich einfacher.
Werd heut abend mal beides ausprobieren.
Ich schreib euch dann was mir besser gefaellt ;-)
Aber vielen dank schon mal
herber.de ist echt n hammer forum !!!!
gruss christian
AW: Buttons ueber makro erzeugen
24.06.2006 08:13:58
schauan
Hallo Christian,
also gelöst scheint es ja, daher muss es nicht bei den offenen bleiben oder?

Hoffe geholfen zu haben
Grüße von André aus Gera - Excel-97-2003

Anzeige
AW: Buttons ueber makro erzeugen
24.06.2006 15:25:36
christian
nein muss es nicht
sorry hab ich wohl übersehen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige