Anzeige
Archiv - Navigation
1588to1592
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

Worksheet + Schaltfläche aus Vorlage erstellen

Worksheet + Schaltfläche aus Vorlage erstellen
08.11.2017 22:15:56
Entropie
Hallo zusammen,
zunächst einmal vielen Dank für die hilfreichen Beiträge, von welchen ich als stiller Leser bereits zahlreiche Male profitieren konnte.
Nun aber zum eigentlichen:
In einer Arbeitsmappe sollen bis zu n "Klienten" verwaltet werden können. Zu jedem Klienten gehören je x Worksheets.
Die x Worksheets sind über eine Hauptseite mittels Schaltflächen erreichbar.
Nun möchte ich gerne via Schaltfläche einen Klienten mit seinen x Worksheets und den dazugehörigen x Schaltflächen generieren können. Die Worksheets sollen dabei aus Vorlagen kopiert werden die sich im Hintergrund befinden und so benannt, dass sie mit den bereits geschriebenen Macros für die Schaltflächen korrespondieren können. Die Namen der einzelnen Worksheets beginnen mit einer Zahl n, Leerzeichen, Worksheetname.
Eine Teillösung (Danke Ramses), die ich aus diesem Forum bereits mitnehmen könnte lautet:

Sub CreateClient()
Worksheets("Vorlage").Copy
ActiveSheet.Name = "Worksheetname " & Worksheets.Count - 2
End Sub

Wenn ich das richtig verstehe, dann wird hier allerdings nach dem Namen nummeriert. (Im Zweifel würde ich dann noch mal den ganzen Hardcode umschreiben). Eine Alternative wäre dennoch hilfreich, sofern es sie gibt.
Eine Möglichkeit gleich die Schaltflächen mit zu erstellen habe ich in einer Teillösung hier _
entdeckt:

Sub Button()
Dim NewButton As Object
Set NewButton = Tabelle1.Buttons.Add(255, 1, 180, 20) 
NewButton.Caption = "" 
NewButton.Font.Bold = True
NewButton.OnAction = "   .   "
End Sub 

Wie kann ich die Position bestimmen, wo der Button hinkommt und zu guter letzt:
Hat jemand eine Idee wie man das in einem Macro zusammenfassen kann?
Ich hoffe ich konnte mein Anliegen nachvollziehbar schildern und jemand weiß damit was _
anzufangen.
Für Hilfe bin ich dankbar.
Liebe Grüße
Entropie

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet + Schaltfläche aus Vorlage erstellen
09.11.2017 12:59:16
Entropie
Moin,
hier ein Update:
Der Lösungsansatz ist zwar nicht elegant, aber er Funktioniert schon mit wenigen Einschränkungen:
Sub AddClient1()
Dim sTxt As String
Application.ScreenUpdating = False
Sheets("Stammdaten").Visible = True
Sheets("IBS").Visible = True
Sheets("Tagesdoku").Visible = True
Worksheets("Stammdaten").Copy After:=Worksheets("Stammdaten")
ActiveSheet.Name = "Stammdaten1"
sTxt = InputBox("Vor- und Nachname des Schützlings eingeben")
If sTxt = "" Then Exit Sub
'MsgBox sTxt
Range("C8").Value = sTxt
Worksheets("IBS").Copy After:=Worksheets("IBS")
ActiveSheet.Name = "IBS1"
Worksheets("Tagesdoku").Copy After:=Worksheets("Tagesdoku")
ActiveSheet.Name = "Tagesdoku1"
Sheets("Stammdaten").Visible = False
Sheets("Stammdaten1").Visible = False
Sheets("IBS").Visible = False
Sheets("IBS1").Visible = False
Sheets("Tagesdoku").Visible = False
Sheets("Tagesdoku1").Visible = False
Application.ScreenUpdating = True
End Sub
Eine Schaltfläche kann nun je einen Satz an Blättern kopieren und korrekt benennen.
Auf der Hauptseite verwende ich dann folgenden Code um je nachdem ob die Datei vorhanden ist
die Schaltflächen ein- oder auszublenden:
Private Sub Worksheet_Activate()
If ActiveSheet.Range("B7").Value > "" Then
ActiveSheet.Shapes("Schaltfläche 1").Visible = True
ActiveSheet.Shapes("Schaltfläche 2").Visible = True
ActiveSheet.Shapes("Schaltfläche 35").Visible = True
Else
ActiveSheet.Shapes("Schaltfläche 1").Visible = False
ActiveSheet.Shapes("Schaltfläche 2").Visible = False
ActiveSheet.Shapes("Schaltfläche 35").Visible = False
End If
End Sub
Ein Klient kann nun gelöscht werden, in dem man über eine weitere Schaltfläche folgendes Makro aktiviert:
Sub DelClient1()
a = MsgBox("Bist du sicher, dass Du diesen Schützling löschen möchtest? Alle Daten gehen  _
unwiederruflich verloren.", vbYesNo)
If a = vbNo Then Exit Sub Else
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets("Stammdaten1").Delete
Sheets("IBS1").Delete
Sheets("Tagesdoku1").Delete
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Wenn ich den Klienten allerdings lösche, dann ist der Zellbezug der über: 'If ActiveSheet.Range("B7").Value > "" Then'
dafür sorgt, dass die Schaltflächen gezeigt werden, oder eben nicht, defekt:
'=WENN(ISTFEHLER(Stammdaten1!C8);"";Stammdaten1!C8)'
Das Bezugsblatt ist gelöscht und wird entsprechend durch #Bezug! ersetzt, wodurch die neue Erstellung eines Klienten zu Fehlern führt.
Ich habe es mit INDIREKT() probiert, hierbei wird die Zielzelle jedoch nicht abgefragt.
Wenn ihr mir hierzu einen Tip geben könnt, wäre ich schon einen ganzen Schritt weiter.
Lieben Gruß
Entropie
Anzeige
AW: Worksheet + Schaltfläche aus Vorlage erstellen
09.11.2017 19:55:48
Entropie
Update: Das funktioniert so ohne weiteres doch nicht.
Das Problem sind Schaltflächen auf den Blättern, die kopiert werden, die entsprechend
benannt werden müssten.
Nun habe ich alle Blätter so erstellt und angepasst.
Leider ist das ein ganz schöner Aufwand Änderungen einzupflegen.
Ich hoffe daher, dass sich doch jemand erbarmt und sich hierzu äußert.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige