Ich glaube, eine Excel-Tabelle und named-Bereich sind zwei verschiedene Dinge, weshalb der .name.name nicht funktioniert. Eine Tabelle ist ein ListObject, und sobald Sie einen Bereich festgelegt haben, der einer Tabelle entspricht, sollten Sie in der Lage sein, diesen Bereich weiterhin ohne Fehler aufzurufen.
Neugierig, was ist der Grund, warum Ihre Tabelle unerwartet geändert werden kann?
Ich schrieb einige Zeilen Code, um ein paar Dinge zu zeigen. Sie können Tabellen erstellen und die Bereichsvariablen wiederverwenden, nachdem sich der Tabellenname geändert hat. Sie können auch AlternativeText für die Tabelle mit einer identifizierenden Zeichenfolge festlegen und diese verwenden, um nach einer bestimmten Tabelle zu suchen, wenn Sie vermuten, dass sich der Tabellenname ändert.
Option Explicit
Public TestTable As Range
Sub CreateTable()
ActiveSheet.ListObjects.Add(xlSrcRange, [$A$1:$C$4], , xlYes).name = "Table1"
ActiveSheet.ListObjects("Table1").AlternativeText = "Table1"
End Sub
Sub SetTableRange()
Set TestTable = Range("Table1")
End Sub
Sub SelectTable()
TestTable.Select
End Sub
Sub RenameTable()
ActiveSheet.ListObjects("Table1").name = "Table2"
[A1].Select
End Sub
Sub SelectRenamedTable()
TestTable.Select
End Sub
Sub ClearSelection()
[A1].Select
End Sub
Sub FindTable1()
Dim obje As ListObject
For Each obje In ActiveSheet.ListObjects
If obje.AlternativeText = "Table1" Then
MsgBox "Found " & obje.AlternativeText & ". Its current name is: " & obje.name
End If
Next obje
End Sub
Sub ConvertTablesToRanges()
' I found this snippet in a forum post on mrexcel.com by pgc01 and modified
Dim rList As Range
On Error Resume Next
With ActiveSheet.ListObjects("Table1")
Set rList = .Range
.Unlist ' convert the table back to a range
End With
With ActiveSheet.ListObjects("Table2")
Set rList = .Range
.Unlist ' convert the table back to a range
End With
On Error GoTo 0
With rList
.Interior.ColorIndex = xlColorIndexNone
.Font.ColorIndex = xlColorIndexAutomatic
.Borders.LineStyle = xlLineStyleNone
End With
End Sub
* [...] Spalten in der Tabelle zu verweisen, auch wenn der Tabellenname ändert * - Wartezeit, wenn der Tabellenname ändert, wird nicht 'Range („tLedgerData“)' auf nichts verweisen? –
Können Sie ein Beispiel für genau das hinzufügen, was Sie * eigentlich * erreichen wollen, d. H. Genau, was meinen Sie mit "Referenzspalten in dieser Tabelle"? –
Laufzeitfehler '1004', vielleicht haben Sie den Bereichsnamen falsch geschrieben, oder das ActiveSheet enthält den benannten Bereich nicht. versuchen Sie, den Namen des Bereichs zu korrigieren, oder versuchen Sie, den Blattnamen vor Range ("tLedgerData") hinzuzufügen, oder stellen Sie sicher, dass der Blattwunsch den benannten Bereich enthält. –