Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1716to1720
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Wert aus Zelle als Tabellenlattname übernehmen
04.10.2019 16:51:14
Alfred
Hallo,
ich habe folgendes Problem:
Der Name des Tabellenblattes soll aus einer Zelle übernommen werden. Die Tabellenblätter sind von 1 - 29 durchnummeriert.
Mit folgendem Code funktioniert das einwandfrei:
Modul1:
Sub Namen_anpassen_alle()
Sheets(1).Select
B = ActiveSheet.Index
For Each w In Worksheets
Sheets(B).Activate
n = [a1]
On Error Resume Next
w.Name = n
B = B + 1
Next w
Sheets(1).Select
CommandButton1:

Private Sub CommandButton1_Click()
Call Namen_anpassen_alle
End Sub

Die Datei habe ich nun auf einen externen Surfer als Vorlage gespeichert.
Öffne ich nun die Datei, funktioniert die Umbenennung nicht mehr.
Warum?
Wenn diese Angaben nicht reichen sollten, lade ich auch gerne die Datei hoch.
Vielleicht weiß jemand eine Lösung.
Danke!
Alfred

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert aus Zelle als Tabellenlattname übernehmen
04.10.2019 17:06:45
onur
Wenn du mal den blöden
On Error Resume Next

weglässt, verrät dir Excel vielleicht auch warum.
AW: Wert aus Zelle als Tabellenlattname übernehmen
04.10.2019 17:22:10
Alfred
Hallo Onur,
danke für Deine Antwort.
Ich habe mal diesen Teil weggelassen:
On Error Resume Next
w.Name = n
B = B + 1
Jetzt zeigt er mir einen "Laufzeitfehler 1004" an.
Im Modul1 steht noch:
Sub Namen_anpassen_alle()
Sheets(1).Select
B = ActiveSheet.Index
For Each w In Worksheets
Sheets(B).Activate
n = [a1]
'On Error Resume Next
'w.Name = n
'B = B + 1
Next w
Sheets(1).Select
'*  Feststehende Registernamen wiederherstellen  *
ActiveSheet.Name = "Klassenliste"
Sheets("Tabelle2").Name = "Bewertung"
Sheets("Tabelle3").Name = "Kompetenzen"
End Sub
Hier beginnt das Problem:
ActiveSheet.Name = "Klassenliste"
Ich möchte, dass die Namen der ersten drei Tabellenblätter beibehalten werden. Erst ab "Tabelle4" soll sich die Änderung auswirken. Der Name von Tabelle4 lautet "1", von Tabelle5 lautet "2", usw.
Hilft Dir das weiter?
Danke!
Alfred
Anzeige
AW: Wert aus Zelle als Tabellenlattname übernehmen
04.10.2019 17:27:55
onur
Was heisst denn "Hier beginnt das Problem:" - kommt da die Fehlermeldung? Und wen ja - welche (welcher Text denn)?
Da steht ja nicht nur "Laufzeitfehler 1004" sondern auch eine Fehlerbeschreibung.
Und warum hast du die anderen beiden Zeiolen herausgenommen?
AW: Wert aus Zelle als Tabellenlattname übernehmen
04.10.2019 17:58:08
Alfred
Hallo Onur,
ich habe jetzt nur
es kommt "Anwendungs- oder objektdefinierter Fehler".
Ich habe mal den Teil nachgebaut. Das Original ist zu groß.
https://www.herber.de/bbs/user/132346.xlsm
Vielleicht nützt das was.
Meine VBA-Kenntnisse sind nicht der Bringer!
Danke!
Alfred
Anzeige
AW: Wert aus Zelle als Tabellenlattname übernehmen
04.10.2019 18:06:22
onur
Erkläre mir doch mal, warum du Blatt "1", "2" und "3" umbenennen willst - die heissen doch schon so.
Wieso bennennst du auch die ersten drei Blätter um und stellst die alten Namen wieder her ?
Erkläre am besten mal genau, was genau du überhaupt erreichen willst.
AW: Wert aus Zelle als Tabellenlattname übernehmen
04.10.2019 18:28:48
Alfred
Hallo Onur,
in meiner Datei hat ...
... Tabelle1 den Namen "Klassenliste"
... Tabelle2 den Namen "Bewertung"
... Tabelle3 den Namen "Kompetenzen"
Diese Nammen sollen/müssen beibehalten werden. Da sie mit Modul1 geändert werden, muss ich sie wieder zu ihren alten Namen bringen. Ich weiß nicht, wie es geht, dass mit dem Modul erst ab Tabelle4 die Namen geändert werden.
Ab Tabelle4 soll, ...
... wenn in "Klassenliste" kein Name eingegeben wurde, mit 1 beginnend durchnummeriert werden. Mit "1! beginnend, weil es sich um die erste Person der Klassenliste handelt.
... wenn ein Name in "Klassenliste" eingegeben wurde, der Nachname und der Vorname als Tabellenname übernommen werden. Endet zum Beispiel die "Klassenliste" nach zwei Namen, soll Tabelle4 und Tabelle5 in die jeweiligen Nachnamen und Vornamen umgewandelt werden. Ab Tabelle6 soll diealte Nummerierung stehen (also "3", "4", usw.)
Ich hatte mir die Datei ald Mailanhang hinterlegt. wenn Ich sie öffne, funktioniert das einwandfrei. Aber als ich sie auf den Server gespeichert hatte und sie dann aufrief, klappte es nicht mehr.
Ich habe meine Originaldatei testweise als Vorlage gespeicher. Funktionierte bei mir. Auf der Serverdatei nicht. Also denke ich mir, es könnte etwas mit dem Speicherort zu tun haben. wäre meine einfache Erklärung. ?
Ich bedanke mich für Deine Geduld, die Du aufbringst. Macht nicht jeder.
Gruß,
Alfred
Anzeige
AW: Wert aus Zelle als Tabellenlattname übernehmen
04.10.2019 18:50:52
onur
Gewöhne dir mal an, alle Variablen zu dimensionieren und mit OPTION EXPLICIT zu arbeiten.
Meintest du so was?
https://www.herber.de/bbs/user/132349.xlsm
AW: Wert aus Zelle als Tabellenlattname übernehmen
04.10.2019 18:55:23
Alfred
Hallo Onur,
das sieht sehr gut aus. Danke Dir.
Ich baue das mal in meine Originaldatei ein und teste es.
Gebe Dir dann Bescheid.
Gruß,
Alfred
AW: Wert aus Zelle als Tabellenlattname übernehmen
04.10.2019 19:01:59
onur
Wenn du statt
nam = Trim(Cells(3 + i, 1))
das hier
nam = Trim(i)
nimmst, brauchst du eigentlich Spalte A (bzw die Zahlen in A) nicht mehr.
AW: Wert aus Zelle als Tabellenlattname übernehmen
04.10.2019 19:11:33
Alfred
Hallo Onur,
ich habe das Modul wie in deinem Beispiel deaktiviert und den Code in Tabelle1 übernommen.
Es erscheint erneut die Fehlermeldung
"Laufzeitfehler '1004'
Anwendungs- oder objektorientierter Fehler
Option Explicit
'**************************************
'* BUTTON "Klassenliste übernehmen" *
'**************************************
Private Sub CommandButton1_Click()
Dim nam, i
Sheets(1).Select
For i = 1 To Sheets.Count - 3
nam = Trim(Cells(3 + i, 1))
If Cells(3 + i, 2)  "" Then nam = Cells(3 + i, 3) & " " & Cells(3 + i, 2)
Sheets(3 + i).Name = nam
Next i
End Sub

Dort erscheint der Fehler:
Sheets(3 + i).Name = nam
Gruß,
Alfred
Anzeige
AW: Wert aus Zelle als Tabellenlattname übernehmen
04.10.2019 19:15:06
onur
Existieren denn alle Blätter schon?
AW: Wert aus Zelle als Tabellenlattname übernehmen
04.10.2019 19:17:31
Alfred
Ja, alle 29 für die Namen und die drei ersten, die nicht umbenannt werden.
AW: Wert aus Zelle als Tabellenlattname übernehmen
04.10.2019 19:18:46
onur
Poste mal die Datei (kannst ja wieder bis auf 1-3 alle löschen).
AW: Wert aus Zelle als Tabellenlattname übernehmen
04.10.2019 19:57:55
Alfred
Hallo Onur,
mit dem "nam = Trim(i)"-Tipp hat es geklappt.
Danke Dir.
Leider habe ich es zu spät gelesen und muss jetzt meine Datei wieder herstellen. Aber ich weiß jetzt, dass es mit der gekürtzen Datei geht.
Ich probiere das gleich noch einmal mit der ganzen Datei, die ich erst wieder komplettieren muss.
danke Dir auf jeden Fall schon mal.
Gruß,
Alfred
AW: Wert aus Zelle als Tabellenlattname übernehmen
04.10.2019 20:20:41
Alfred
Hallo Onur,
also bei vier Blättern funktioniert das. Ich habe alle anderen gelöscht.
Jetzt sollte ich vielleicht mal eines nach dem anderen neu machen und sehen, was passiert.
Danke mal soweit.
Gruß,
Alfred
Anzeige
AW: Wert aus Zelle als Tabellenlattname übernehmen
04.10.2019 18:58:27
Piet
Hallo Alfred
ersetze deinen Code bitte mal durch diesen, dann sollt es klappen. Viel Spass beim testen...
mfg Piet
Sub Namen_anpassen_alle()
Dim Sht As Variant, w As Integer
On Error Resume Next
For w = 4 To Worksheets.Count
If Sheets(w).Name  w - 3 Then
Sheets(w).Name = CStr(w - 3)
End If
Next w
End Sub

AW: Wert aus Zelle als Tabellenlattname übernehmen
04.10.2019 19:49:05
Piet
Hallo Alfred
ich habe gerade gesehen das die Tabellen 1-30 mit Schüler Namen versehen werden sollen. Dann bitte so ....
Die innere For Next Schleife prüft ob das Blatt bereits existiert. Es ist onur sein Code, nur etwas modifiziert.
mfg Piet
Private Sub CommandButton1_Click()
Dim nam As String, i As Integer, j As Integer
For i = 4 To Sheets.Count
If Cells(i, 2) = Empty Then Exit For
nam = Trim(Cells(i, 2)) & " " & Cells(i, 1)
'Prüfung ob Blatt schon existiert?
For j = 4 To Sheets.Count
If Sheets(j).Name = nam Then nam = Empty
Next j
If nam  Empty Then Sheets(i).Name = nam
Next i
End Sub

Anzeige
AW: Wert aus Zelle als Tabellenlattname übernehmen
04.10.2019 20:18:21
Alfred
Hallo Piet,
danke für Deine Nachricht.
Jetzt muss ich aufpassen, dass ich den Überblick nicht verliere.
Das hat nicht funktioniert:
Sub Namen_anpassen_alle()
Dim Sht As Variant, w As Integer
On Error Resume Next
For w = 4 To Worksheets.Count
If Sheets(w).Name w - 3 Then
Sheets(w).Name = CStr(w - 3)
End If
Next w
End Sub Keine Fehlermeldung, aber auch keine Änderung.
Das hier gibt eine Fehlermeldung:
Private Sub CommandButton1_Click()
Dim nam As String, i As Integer, j As Integer
For i = 4 To Sheets.Count
If Cells(i, 2) = Empty Then Exit For
nam = Trim(Cells(i, 2)) & " " & Cells(i, 1)
'Prüfung ob Blatt schon existiert?
For j = 4 To Sheets.Count
If Sheets(j).Name = nam Then nam = Empty
Next j
If nam  Empty Then Sheets(i).Name = nam
Next i
End Sub

Laufzeitfehler 1004:
Anwendungs- oder objektdefinierter Fehler
If nam Empty Then Sheets(i).Name = nam
markiert wird "Sheets(i).Name = nam"
?
Gruß,
Alfred
Anzeige
AW: Wert aus Zelle als Tabellenlattname übernehmen
04.10.2019 21:17:15
Alfred
Hallo,
ich habe die Lösung für mein Problem gefunden:
Die Mappe war geschützt!
Danke an Onur (der so viel Geduld mitbringt) und Piet, die mir viel geholfen haben.
Gruß,
Alfred
AW: Wert aus Zelle als Tabellenlattname übernehmen
05.10.2019 14:18:37
Piet
Hallo Alfreed
ich bin jetzt etwas verwirrt weil ich überzeugt war durch den "Blatt vorhanden" Test all Sheet Fehler abzufangen.
Wenn das nicht klappt aendere bitte den Code wie unten, dann bekommst du angezeigt bei welchem Blatt Namen der Fehler entsteht.
Wenn du hinter der Msgbox "Rsume Next" weg laesst, raus löschst, stoppt das Programm an der Stelle!
mfg Piet
Private Sub CommandButton1_Click()
Dim nam As String, i As Integer, j As Integer
On Error GoTo Fehler
For i = 4 To Sheets.Count
If Cells(i, 2) = Empty Then Exit For
nam = Trim(Cells(i, 2)) & " " & Cells(i, 1)
'Prüfung ob Blatt schon existiert?
For j = 4 To Sheets.Count
If Sheets(j).Name = nam Then nam = Empty
Next j
If nam  Empty Then Sheets(i).Name = nam
Next i
Exit Sub   'Ohne Resume next Programm Abbruch!
Fehler: MsgBox "Fehler bei Name:  " & nam: Resume Next
End Sub

Anzeige

341 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige