Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA - Neues Sheet erzeugen
#11
Hi,

erzeuge eine neue Tabelle mit deinen Formatierungen und speicher die als Musterdatei ab.

Dann kannst du im Makro das du ja hast, statt der Sheets.Add den Befehl Sheets.Copy verwenden.


Code:
      Sheets.Add after:=Sheets(Sheets.Count), Type:="G:\Temp\Formatmuster.xlsx"
Den Namen und Pfad zur Musterdatei mußt du natürlich im Code anpassen.

Dabei ist die Datei Formatmuster.xlsx die Datei mit der formatierten Vorlagetabelle. Das Makro wird in der Datei eingefügt, wo das neue Sheet einzufügen ist und die Musterdatei muß dabei nicht geöffnet sein. Danach benennt du das neue Sheet entsprechend um.
Mit freundlichen Grüßen  :)
Michael
Antworten Top
#12
Hallo alti89,
don't worry, alle haben mal angefangen!
Also: in Datei Blatt Temp erzeugen, so formatieren, wie Du das haben willst, anschließend ausblenden (auf den Blattnamen Rechtsklick und Ausblenden).
Der leicht geänderte Code ist dann:
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 And BlattName <> "" Then 'keine leere Zelle, Name vorhanden
    '** 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("Temp").Visible = True 'Einblenden
        .Sheets("Temp").Copy after:=Sheets(Worksheets.Count)'Blatt kopieren
        .ActiveSheet.Name = BlattName' umbenennen
        .Sheets("Temp").Visible = False' wieder ausblenden
      End With
    End If
  End If
  Cancel = True 'eigentliches Doppelklick-Ergebnis canceln
End If
End Sub


Gruß der AlteDresdner
Gruß der AlteDresdner (Win11, Off2021)
Antworten Top
#13
Hallöchen,

hier ist dann noch mal die Stelle aus dem Code vom Dresdner Smile

.Sheets.Add after:=Sheets(Worksheets.Count)

Den ersetzt Du durch

.Sheets("MeinMusterSheet").Copy after:=Sheets(Worksheets.Count)

Wenn Dein Blatt mit der Tabelle nicht "MeinMusterSheet" heißt, dann musst Du das im Code entsprechend anpassen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#14
Das Probier ich nachher gleich aus !

vielen Dank schonmal , werde über erfolg oder misserfolg berichten :D
Antworten Top
#15
Hey,

also so ganz komm ich nicht zurecht :(
nun Funktioniert mein Code gar nicht mehr :(

hab ihn so angepasst


Code:
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 = 2 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(Sheets.Count), Type:="C:\Users\sascha.altmann\AppData\Roaming\Microsoft\Templates\Test.xltx"
       .ActiveSheet.Name = BlattName
     End With
   End If
 End If
 Cancel = True 'eigentliches Doppelklick-Ergebnis canceln
End If
End Sub
Antworten Top
#16
[quote pid='26606' dateline='1446460024']
Hallo alti89,
was heißt: nun funktioniert er gar nicht mehr?
Was geht nicht, in welcher Codezeile tritt welcher Fehler auf?
Eigentlich sollte es funtkionieren, wenn die Vorlage da ist.
Gruß der ALteDresdner
[/quote]
Gruß der AlteDresdner (Win11, Off2021)
Antworten Top
#17
Hey,

also es kommt kein Fehler, er hüpft nur immer in das Letzte Tabellenblatt
das wars dann auch schon Huh
Antworten Top
#18
Hi Sascha,

(02.11.2015, 11:27)alti89 schrieb: also so ganz komm ich nicht zurecht :(
nun Funktioniert mein Code gar nicht mehr :(

hab ihn so angepasst


Code:
If Target.Column = 2 Then 'DBlClick Spalte C

 'neuer Blattname aus Zellinhalt
 BlattName = Target.Text 'Inhalt der Zelle

klickst Du in Spalte 2 (B) oder 3 ©?
Antworten Top
#19
2(B) :)
Antworten Top
#20
Hi Sascha,

(02.11.2015, 11:48)alti89 schrieb: 2(B) :)

wenn die Datei vorhanden ist und ich in die richtige Spalte doppelklicke, funktioniert das Makro bei mir, das Musterarbeitsblatt wird eingefügt und umbenannt!

Hast Du das Makro im Code-Modul des doppelzuklickenden Tabellenblattes?
Antworten Top


Gehe zu:


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