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.

Erstellung und Benennung von Tabellenblättern
#1
Hallo zusammen, 

die Ursprungsdatei besteht aus einer Tabelle in der in Spalte C (ab C3) mehrere Artikel aufgelistet sind. Durch ein Makro soll nun für jeden Artikel ein neues Tabellenblatt mit dem jeweiligen Namen erzeugt werden bis eine leere Zelle auftritt. 

Bis jetzt sieht der Code wie folgt aus: 

Code:
Sub Transfer()
      Dim x As Integer
      Application.ScreenUpdating = False' Set numrows = number of rows of data.

      NumRows = Range("C3", Range("C3").End(xlDown)).Rows.Count' Select cell C3.

      Range("C3").Select
      ' Establish "For" loop to loop "numrows" number of times.
      For x = 1 To NumRows
         
          'Creation of new sheets
         
         ActiveCell.Offset(1, 0).Select
      Next
      Application.ScreenUpdating = True
End Sub

In der Schleife fehlt jetzt noch die Erstellung der Tabellenblätter, habe bereits mehrere Möglichkeiten ohne Erfolg getestet. 

Kann mir da jemand behilflich sein?

Vielen Dank im Voraus
SimonVBA
Antworten Top
#2
Hallo,

Code:
Option Explicit

Public Sub Neue_Blätter()
Dim i As Long, ws As Worksheet

Application.ScreenUpdating = False

With Worksheets("Tabelle1") 'Blattname anpassen
    For i = 3 To .Cells(.Rows.Count, "C").End(xlUp).Row
        On Error Resume Next
        Set ws = ThisWorkbook.Worksheets(CStr(.Cells(i, "C")))
        On Error GoTo -1
        If ws Is Nothing Then
            Worksheets.Add After:=Sheets(Sheets.Count)
            ActiveSheet.Name = .Cells(i, "C")
        End If
    Next i
    .Activate
End With

Set ws = Nothing 
End Sub

Ob das Blatt, das neu angelegt werden soll, schon vorhanden ist, wird geprüft.

Achtung: Es erfolgt keine Prüfung ob der Blattname aus der jeweiligen Zelle ungültige Zeichen enthält oder zu lang ist.

Gruß Werner
[-] Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:
  • SimonVBA
Antworten Top
#3
Smile 
Hallo Werner, 

klappt wunderbar. Vielen Dank. 

Hab jetzt noch einen Code vorgeschaltet der die Sonderzeichen aus der Spalte entfernt. Smile 

Viele Grüße
Simon
Antworten Top


Gehe zu:


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