tutorials.de Buch-Aktion 02/2012
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
14782
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Pinky Pinky ist offline Mitglied Gold
    Registriert seit
    Aug 2003
    Beiträge
    156
    Hallo Tutorials.de,

    ich habe eine Excel-Datei, welche eine Übersicht bez. diversen Klassen darstellen soll. Da diese Tabelle mehrere Jahre halten soll und die Klassen in dieser Zeit varriieren, möchte ich eine Funktion einbauen, welche genau die Anzahl Tabellenblätter erstellt, wie ich auch Kalssen habe.

    Das klappt auch, kein Problem. Jedoch der kleine Schönheitsfehler ist, bei benennen per Schlaufe heissen meine Tabellen nur 1, 2, 3 ...! Ich will aber, dass die Tabellen Klasse 1, Klasse 2, Klasse 3 ... heissen! Wie geht das?

    Code zum Tabellen automatisch erstellen:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    Sub tabellen()
    klassen = Sheets("KP Informationen").Range("B4") /Wieviele Klassen sind es? Ist da eingetragen
        
        Dim X As Long
        For X = 1 To klassen
            Sheets("Klasse 1").Select
            Sheets("Klasse 1").Copy After:=Sheets(2)
            Sheets("Klasse 1 (2)").Select
            Sheets("Klasse 1 (2)").name = X
        Next
    End Sub

    Vielen Dank für jegliche Hilfe
    Pinky
     

  2. #2
    Nirraven Nirraven ist offline Mitglied Brokat
    Registriert seit
    Nov 2003
    Ort
    Tecklenburg (NRW)
    Beiträge
    258
    Das beste ist hier nicht über den Namen, sondern über den Index zu gehen.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    Sub tabellen()
    klassen = Sheets("KP Informationen").Range("B4") /Wieviele Klassen sind es? Ist da eingetragen
     
        Dim X As Long
        For X = 1 To klassen
            Sheets(X).Copy After:=Sheets(X)
            Sheets(X + 1).Name = "Klasse" & X + 1
        Next
    End Sub
     
    "Weeks of programming saves days of planning"

  3. #3
    Pinky Pinky ist offline Mitglied Gold
    Registriert seit
    Aug 2003
    Beiträge
    156
    Oh, danke, das hat super geklappt.

    Wie kann ich nun aber die neuen Tabellen ans Ende stellen?

    Vielen Dank
    Pinky
     

  4. #4
    Nirraven Nirraven ist offline Mitglied Brokat
    Registriert seit
    Nov 2003
    Ort
    Tecklenburg (NRW)
    Beiträge
    258
    In der Schleife oben werden die doch nach der Tabelle "Klasse X" erstellt. Also doch eigentlich immer am ende.
     
    "Weeks of programming saves days of planning"

  5. #5
    Pinky Pinky ist offline Mitglied Gold
    Registriert seit
    Aug 2003
    Beiträge
    156
    Stimmt, klappt auch!

    Danke
     

  6. #6
    Cyryc Cyryc ist offline Grünschnabel
    Registriert seit
    Oct 2007
    Beiträge
    2
    Liebe Leute,

    bin leider ein absoluter Neuling in Sachen EXCEL...

    ich habe ein ähnliches Problem:

    Ich möchte, abhängig von einem Zellwert (A1) in Sheet 1, eine Anzahl von Sheets auf der Basis eines vorhandenen Sheets 3 neu erstellen (Kopien von Sheet 3).Die Namen der neuen Sheets stehen in einer Tabelle in Sheet 2, deren Länge sich natürlich nach dem Wert von A1 in Sheet 1 richtet. Die Namen werden also automatisch generiert und stehen in der Tabelle (also z.B. A3 : A10). Hab ich mich einigermaßen klar ausgedrückt?

    Bin für Hilfe in dieser Angelegenheit sehr dankbar!
     

  7. #7
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.440
    Hi,

    ausgehend davon, dass sich die Anzahl in A1 (Sheet 1) und die Namen in Sheet 2 ab A1 befinden, kannst
    du folgendes versuchen:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    Public Sub NewTablesByName()
        Dim intAnzahl As Integer, intZaehler As Integer
        
        intAnzahl = CInt(Sheets(1).Cells(1, 1)) ' Anzahl auf Sheet 1, Zelle A1
        
        For intZaehler = 1 To intAnzahl
            Sheets(3).Copy after:=Sheets(Sheets.Count)
            Sheets(Sheets.Count).Name = Sheets(2).Cells(1, intZaehler)  ' Name auf Sheet 2 ab Zelle A1
        Next intZaehler
    End Sub
    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

  8. #8
    Cyryc Cyryc ist offline Grünschnabel
    Registriert seit
    Oct 2007
    Beiträge
    2
    Hallo,

    danke für die schnelle Antwort - klappt auch wunderbar! Hab nur ein Kleinigkeit vergessen, wie ich jetzt bemerkt habe: Die in A1 eingebene Anzahl könnte sich ändern - mit dem Effekt, dass sich EXCEL beim neuen Aufruf des Makros beschwert, die Blätter gäbe es ja schon - ich bräuchte also noch als Ergänzung eine Überprüfung, ob das jeweilige Blatt bereits vorhanden ist, bevor es neu angelegt wird.

    Erstmal aber shconmal vielen Dank für die Hilfe!
     

  9. #9
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.440
    Hi,

    du könntest jeweils die sheets-Kollektion durchlaufen und überprüfen, ob der aktuelle Name bereits
    vorhanden ist. Anhand einer booleschen Variablen kannst du das weitere Vorgehen entscheiden.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    Public Sub NewTablesByName()
        Dim intAnzahl As Integer, intZaehler As Integer
        Dim blnTest As Boolean
        Dim objSheet As Variant
        
        intAnzahl = CInt(Sheets(1).Cells(1, 1)) ' Anzahl auf Sheet 1, Zelle B8
        
        For intZaehler = 1 To intAnzahl
            blnTest = False
            
            For Each objSheet In Sheets
                If objSheet.Name = Sheets(2).Cells(1, intZaehler) Then
                    blnTest = True
                    Exit For
                End If
            Next objSheet
     
            If Not blnTest Then
                Sheets(3).Copy after:=Sheets(Sheets.Count)
                Sheets(Sheets.Count).Name = Sheets(2).Cells(1, intZaehler)  ' Name auf Sheet 2 ab Zelle B13
            End If
     
        Next intZaehler
    End Sub
    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

Ähnliche Themen

  1. Excel Tabellenblatt erstellen?
    Von TOLIK im Forum .NET Archiv
    Antworten: 5
    Letzter Beitrag: 28.02.10, 20:14
  2. [Excel] Tabellenblatt mit Makro einfügen.
    Von hauke1981 im Forum Office-Anwendungen
    Antworten: 3
    Letzter Beitrag: 16.12.08, 08:30
  3. [Excel] Inhalt einer Excel Datei als neues Tabellenblatt einfügen
    Von hauke1981 im Forum Office-Anwendungen
    Antworten: 1
    Letzter Beitrag: 14.12.08, 19:02
  4. [Excel] Tabellenblatt-Beschriftung ausblenden
    Von MAN im Forum Office-Anwendungen
    Antworten: 2
    Letzter Beitrag: 03.09.04, 11:12
  5. Webserver LogFiles automatisch packen und fortlaufend benennen
    Von madmax2600 im Forum Hosting & Webserver
    Antworten: 2
    Letzter Beitrag: 21.07.03, 15:11