ERLEDIGT
JA
JA
ANTWORTEN
8
8
ZUGRIFFE
14782
14782
EMPFEHLEN
-
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
-
17.07.06 11:14 #2
- 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"
-
Oh, danke, das hat super geklappt.
Wie kann ich nun aber die neuen Tabellen ans Ende stellen?
Vielen Dank
Pinky
-
17.07.06 12:26 #4
- 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"
-
Stimmt, klappt auch!
Danke
-
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!
-
Hi,
ausgehend davon, dass sich die Anzahl in A1 (Sheet 1) und die Namen in Sheet 2 ab A1 befinden, kannst
du folgendes versuchen:
CiaoCode :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
QuaeseVielleicht 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
-
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!
-
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.
CiaoCode :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
QuaeseVielleicht 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
-
Excel Tabellenblatt erstellen?
Von TOLIK im Forum .NET ArchivAntworten: 5Letzter Beitrag: 28.02.10, 20:14 -
[Excel] Tabellenblatt mit Makro einfügen.
Von hauke1981 im Forum Office-AnwendungenAntworten: 3Letzter Beitrag: 16.12.08, 08:30 -
[Excel] Inhalt einer Excel Datei als neues Tabellenblatt einfügen
Von hauke1981 im Forum Office-AnwendungenAntworten: 1Letzter Beitrag: 14.12.08, 19:02 -
[Excel] Tabellenblatt-Beschriftung ausblenden
Von MAN im Forum Office-AnwendungenAntworten: 2Letzter Beitrag: 03.09.04, 11:12 -
Webserver LogFiles automatisch packen und fortlaufend benennen
Von madmax2600 im Forum Hosting & WebserverAntworten: 2Letzter Beitrag: 21.07.03, 15:11





Zitieren

Login




