VBA - Neues Sheet erzeugen
#1
Hi Zusammen,

ich hab hier im Inet einen Code gefunden:


Code:
Sub NeuesSheet()
02.
'** Neues benanntes Tabellenblatt einfügen
03.
'** einfügen als letztes Blatt
04.

05.
'** Dimensionierung der Variablen
06.
Dim blatt As Object
07.
Dim BlattName As String
08.
Dim bloFlg As Boolean
09.

10.
'** Blattname festlegen
11.
BlattName = "Neues Blatt"
12.

13.
'** Prüfen, ob das Blatt, welches eingefügt werden soll bereits vorhanden ist
14.
'** Nur einfügen, wenn Blatt noch nicht vorhanden ist
15.
For Each blatt In Sheets
16.
If blatt.Name = BlattName Then bolflg = True
17.
Next blatt
18.

19.
'** Blatt nur einfügen, wenn noch nicht vorhanden
20.
If bolflg = False Then
21.
With ThisWorkbook
22.
.Sheets.Add after:=Sheets(Worksheets.Count)
23.
.ActiveSheet.Name = "Neues Blatt"
24.
End With
25.
End If
26.

27.
End Sub

Wie kann ich diesen Code so abändern - das :

er neues Sheet bei Klick auf eine Zelle im Bereichen von C:C erstellt
er den namen der Zelle als beschriftung des Sheets übernimmt?

Gruß
Sascha
Top
#2
Hallo alti89,
mit einfachem Klick geht es nicht. Der nachfolgende Code setzt einen Doppelklick auf die Zelle voraus, man könnte es noch auf das andere mögliche Ereignis (BeforeRightClick) umbauen, würde ich aber nicht empfehlen.
Im Code sind zwei Möglichkeiten für den Blattnamen vorhanden:
1. aus Zellinhalt (auskommentiert)
2. aus Namen der Zelle (ist aktiv).
Der Code gehört in den Codeteil des entsprechenden Blattes.
Gruß der AlteDresdner

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim blatt As Object '** Dimensionierung der Variablen
Dim BlattName As String
Dim bolFlg As Boolean
If Target.Column = 3 Then 'DBlClick Spalte C
 
  'neuer Blattname aus Zellinhalt
  'BlattName = Target.Text 'Inhalt der Zelle
 
  'neuer Blattname aus Name der Zelle
  On Error Resume Next 'falls Zelle keinen Namen hat
  BlattName = Target.Name.Name 'Name der Zelle
 
  If Not Err Or BlattName <> "" Then 'keine leere Zelle
    '** Prüfen, ob das Blatt, welches eingefügt werden soll bereits vorhanden ist
    bolFlg = False
    For Each blatt In Sheets
      If blatt.Name = BlattName Then bolFlg = True
    Next blatt
    If Not bolFlg Then  '** Blatt nur einfügen, wenn noch nicht vorhanden
      With ThisWorkbook
        .Sheets.Add after:=Sheets(Worksheets.Count)
        .ActiveSheet.Name = BlattName
      End With
    End If
  End If
  Cancel = True 'eigentliches Doppelklick-Ergebnis canceln
End If
End Sub
Gruß der AlteDresdner (Win11, Off2021)
Top
#3
Heart 

Perfekt vielen Dank.
Funktioniert 1 a
Top
#4
ok gleich noch eine Frage hinterher ..

gibt es die möglichkeit das erstellte Sheet "vor" zu Formatieren?
Top
#5
(28.10.2015, 16:42)alti89 schrieb: ok gleich noch eine Frage hinterher ..

gibt es die möglichkeit das erstellte Sheet "vor" zu Formatieren?

Aber ja, mit .Sheets.Add before:=Sheets(1) wird es dann vor dem 1. Blatt eingefügt.
Kreigt man auch raus, wenn man mal Add markiert und die Taste F1 drückt, da sind die möglichen Parameter und Optionen in der Hilfe sichtbar.
Soll keine Kritik zur Frage, sondern eine Anregung sein!
Gruß der ALteDresdner
Gruß der AlteDresdner (Win11, Off2021)
Top
#6
Hi,

ich denke seine Frage war, das neue Sheet mit bestimmten Formatierungen zu versehen beim Erstellen und Einfügen.
Mit freundlichen Grüßen  :)
Michael
Top
#7
Hallo Michael,

Zitat:ich denke seine Frage war, das neue Sheet mit bestimmten Formatierungen zu versehen beim Erstellen und Einfügen.


... dann wäre es ja eine relativ einfache Geschichte.
Ein Blatt als Vorlage einrichten, es bei Bedarf kopieren und letztendlich umbenennen ... feddisch
Top
#8
ja ::D das war mein Gedanke dahinter, das z.B das neue Sheet schon eine Tabelle enthält. ?
wenn ja wie kann ich das denn machen ? :)
Top
#9
Hallöchen,

das funktioniert im Prinzip genau so.

Sheets.Add erzeugt ein neues Blatt
Sheets(...).Copy kopiert eines. Dan genauen Code kannst Du z.B. durch Aufzeichnen ermitteln.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#10
okay,

leider kenn ich micht nich so ( oder noch nicht so gut ) in VBA aus,

kann ich diese makro einfach die Formatierung rein nehmen, in dem ich ein Blatt erstell und das erstellen aufnehme mit diesem Makro rekorder ?

sorry bin was das angeht ziemlicher anfänger
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste