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.

Tabelle1 umbenennen in den Text welcher in A1 steht
#1
Question 
hi, eine Tabelle umenennen geht so:

    Sheets("Tabelle1").Select

    Sheets("Tabelle1").Name = "NEUERTABELLENNAME"


Jedoch möchte ich, dass die Tabelle so benannt wird, wie das was in Feld A1 steht.

So funktioniert es jedoch nicht:
    Sheets("Tabelle1").Name = "Sheets("Tabelle1").Cells(1, 1)"
Antworten Top
#2
vielleicht läßt du die Anführungsstriche weg und das Select gleich auch.
Antworten Top
#3
Sheets("Tabelle1").Name = Range("A1")
Antworten Top
#4
Hallo,
den..
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TN As String
    If Target = Range("A1") Then
        TN = ActiveSheet.Name
        Sheets(TN).Name = Range("A1")
    End If
End Sub
in das entsprechen Tabellenblatt und es klappt auch bei jeder weiteren Änderung in "A1"
Gruß Dirk
---------------
100  - Wenn du nicht weißt, wo du hin willst, ist es egal, welchen Weg du einschlägst.

Antworten Top
#5
Hi,

Target = Range("A1") funktioniert zwar, aber mehr oder weniger nur zufällig. Und wieso nicht Me verwenden?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Me.Name = Target
    End If
End Sub
Aber selbst das funktioniert nur, wenn A1 die einzige Zelle ist, die geändert wird. Besser wäre
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        Me.Name = Range("A1")
    End If
End Sub
Aber auch hier funktioniert es nur bei händischer Eingabe. Wenn sich der Inhalt aufgrund einer Formel ändert, funktioniert auch dies nicht. Dann muss man die Vorgängerzellen mit überprüfen:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1").Precedents) Is Nothing Then
        Me.Name = Range("A1")
    End If
End Sub
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#6
Hallo Helmut,

jepp, stimmt.
Danke für dein "Aufzeigen"

Die vermeidlich "beste" Variante, die mich tatsächlich auch selbst interessiert hätte,
Code:
    If Not Intersect(Target, Range("A1").Precedents) Is Nothing Then
gibt mir allerdings die Fehlermeldung 1004 /Keine Zellen gefunden\  zurück.
Egal ob A1 handich oder über Code geändert wurde.

P.S. funktionier ausschließlich wenn A1 eine Formel enthält und der Inhalt sich über die Formel ändert. (Vlt ein Gedankenfehler meinerseits. Die Kombi von beidem ist es dann wohl)

Die anderen Varianten funktionieren, sind halt nur bedingt besser, bringen eben den Mehrwert nicht mit.
Gruß Dirk
---------------
100  - Wenn du nicht weißt, wo du hin willst, ist es egal, welchen Weg du einschlägst.

Antworten Top
#7
Hin Dirk,

diese Variante funktioniert nur, wenn in A1 eine Formel steht und eine der Ausgangszellen der Formel verändert wird. Ohne Formel die auf anderen Zellen basiert, führt Precedents zu einem Fehler.

Wenn A1 per Code verändert wird, dann kann man doch auch gleich im selben Code den Blattnamen ändern. Da braucht es kein Event.

Wenn in A1 wahlweise eine Formel mit anderen Zellen oder ein händischer Eintrag vorkommen sollte, dann muss man vorher prüfen, ob es sich um eine Formel handelt und entsprechend reagieren.

Oder man macht es so:
Code:
...
Dim Bereich As Range
...
Set Bereich = Range("A1")
On Error Resume Next
Set Bereich = Union(Bereich, Bereich.Precedents)
On Error Goto 0
If Not Intersect(Target, Bereich) Is Nothing Then
...

Hi Dirk,

(22.12.2022, 10:10)DIZA schrieb: Die anderen Varianten funktionieren, sind halt nur bedingt besser, bringen eben den Mehrwert nicht mit.

Das stimmt so auch nicht ganz. Mal abgesehen davon, dass die Variante
Code:
TN = ActiveSheet.Name
unnötigerweise eine Variable benötigt und einige überflüssige Zugriffe auf Excel.Objekte benötigt (die langsam sind), steckt tief versteckt eine Fehlermöglichkeit, auf die ich selbst schon mal reingefallen bin.

Ich habe damals ewig gebraucht den Fehler zu finden. Und es ist mir erst gelungen, als ich dem Anwender über die Schulter geschaut habe. Dieser Anwender hatte die Angewohnheit etwas in Zelle einzutragen und dies nicht mit Enter zu bestätigen, sondern einfach mit der Maus die nächste Eingabezelle auszuwählen. Selbst das funktioniert normalerweise. Nur wenn die nächste Eingabe auf einem anderen Blatt stattfinden sollte, dann hat er einfach direkt das nächste Blatt ausgewählt. Somit war ActiveSheet eben nicht mehr das Blatt, in dem das Event lieg, sondern ein anderes. In deinem Fall würde also das neue Blatt den Namen der Zelle A1 im alten Blatt bekommen.
Seither weiß ich, dass alles was ActiveXXX heißt, gefährlich ist. Ich zitiere mal sinngemäß einen bekannten Satz aus einem Film: "ActiveIrgendswas ist wie eine Schachtel Pralinen, man weiß nie, was man bekommt."
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:
  • DIZA
Antworten Top
#8
Hi,

hatte mir es jetzt so..
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        Me.Name = Range("A1")
    ElseIf Not Intersect(Target, Range("A1").Precedents) Is Nothing Then
        Me.Name = Range("A1")
    End If
On Error GoTo 0
End Sub
zurecht gelegt.
Dein Weg ist sicher genau so gut.

Fazit:
Der TS sollte nun eine "häpchen geschnittene" Lösung einsetzen können und für mich ist auch noch was "abgefallen" 05
Gruß Dirk
---------------
100  - Wenn du nicht weißt, wo du hin willst, ist es egal, welchen Weg du einschlägst.

Antworten Top


Gehe zu:


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