Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1096to1100
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
Inhaltsverzeichnis

VBA Zellnamen überprüfen

VBA Zellnamen überprüfen
Hilfesuchender
Hallo zusammen,
ich habe das Problem, dass ich überprüfen möchte, ob eine Zelle einen Namen hat oder nicht. Falls sie einen Namen hat, soll dieser gelöscht werden. Dies funktioniert auch ganz gut, solange die Zelle einen Namen hat, aber wenn alle Namen für eine Zelle gelöscht sind, wird ein Fehler ausgegeben. Der Fehler lautet: Laufzeitfehler 1004, Anwendungs- oder Objektorientierter Fehler. Das liegt meiner Meinung nach daran, dass sobald alle Namen gelöscht sind ich nicht mehr auf Cells(j,i).name zugreifen kann. Bisher habe ich das so gemacht:
For i = 4 To k
For j = 5 To l
Do While (Cells(j, i).name "")
Cells(j, i).name.Delete
Loop
Next
Next
Kann mir jemand bei diesem Problem helfen?
Vielen Dank im Voraus!
Beste Grüße

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Namen löschen mit Schmitti...
25.08.2009 10:44:09
Hilfesuchender
Hallo Matthias,
mit dieser Lösung werden aber alle Zellnamen im kompletten Workbook gelöscht. Dies sollte nicht der Fall sein. Es sollen nur die Zellnamen für die Zellen in einem bestimmten Bereich im aufgerufenen Sheet gelöscht werden. Deshalb auch die beiden For-Schleifen!
Gruß Tobias
AW: Namen löschen mit Schmitti...
25.08.2009 11:00:53
Matthias5
Hallo Tobias,
stimmt, dann so:
Sub Namen_im_Bereich_loeschen()
Dim nm As Name, Bereich As Range
Set Bereich = Range("C5:D9")
For Each nm In ThisWorkbook.Names
If Not Intersect(Range(nm.RefersTo), Bereich) Is Nothing Then nm.Delete
Next nm
End Sub
Gruß,
Matthias
Anzeige
AW: Namen löschen mit Schmitti...
25.08.2009 12:32:15
Hilfesuchender
Hallo Matthias,
hab das jetzt mal so probier umzusetzen:
Sub zellen()
Dim i As Long
Dim j As Long
Dim k As Long
Dim l As Long
k = Cells(4, Columns.Count).End(xlToLeft).Column
l = Cells(Rows.Count, 5).End(xlUp).Row
Dim nm As name, Bereich As Range
Set Bereich = Range(Cells(5, 4), Cells(l, k))
For Each nm In ThisWorkbook.Names
If Not Intersect(Range(nm.RefersTo), Bereich) Is Nothing Then nm.Delete
Next nm
End Sub

Funktioniert aber leider immer noch nicht. Kann es daranliegen, dass ich meinen ersten Bereich irgendwie falsch auswähle?
Danke!
Gruß,
Tobias
Anzeige
AW: Namen löschen mit Schmitti...
25.08.2009 12:58:57
Matthias5
Hallo Tobias,
welchen Wert haben l und k, wenn der Fehler kommt?
Wo hast du den Code stehen? So wie er vorliegt gehört er in das Klassenmodul des Tabellenblattes.
Gruß,
Matthias
AW: Namen löschen mit Schmitti...
25.08.2009 13:06:22
Hilfesuchender
Hallo Matthias,
l und k sind konstant. l ist 32 und k ist 9.
Der Code liegt in "DieseArbeitsmappe".
Gruß,
Tobias
AW: Namen löschen mit Schmitti...
25.08.2009 13:16:29
Matthias5
Hallo,
wenn der Code in "DiesArbeitsmappe" steht, musst du noch auf das Tabellenblatt referenzieren (hier das aktive Blatt):
Sub zellen()
Dim i As Long
Dim j As Long
Dim k As Long
Dim l As Long
With ActiveSheet
k = .Cells(4, Columns.Count).End(xlToLeft).Column
l = .Cells(Rows.Count, 5).End(xlUp).Row
Dim nm As Name, Bereich As Range
Set Bereich = .Range(.Cells(5, 4), .Cells(l, k))
For Each nm In ThisWorkbook.Names
If Not Intersect(.Range(nm.RefersTo), Bereich) Is Nothing Then nm.Delete
Next nm
End With
End Sub
Gruß,
Matthias
Anzeige
AW: Namen löschen mit Schmitti...
25.08.2009 15:31:38
tobi
das gibt leider immer noch den gleichen Fehler aus. Ich lade dir mal eine beispieldatei hoch, die allerdings gekürzt ist. ich würde dort in mappe eins gern alle namen löschen und die in mappe 2 sollen erhalten bleiben.
https://www.herber.de/bbs/user/64043.xls
danke.
Gruß Tobias
AW: Namen löschen mit Schmitti...
25.08.2009 16:32:40
Matthias5
Hi,
Sub zellen()
Dim i As Long
Dim j As Long
Dim k As Long
Dim l As Long
With Sheets("Tabelle1")
k = 9 '.Cells(4, Columns.Count).End(xlToLeft).Column
l = 32 '.Cells(Rows.Count, 5).End(xlUp).Row
Dim nm As Name, Bereich As Range
Set Bereich = .Range(.Cells(5, 4), .Cells(l, k))
For Each nm In ThisWorkbook.Names
rng = Replace(Mid(nm.RefersTo, InStr(nm.RefersTo, "!") + 1), "$", "")
ws = Mid(nm.RefersTo, 2, InStr(nm.RefersTo, "!") - 2)
If ws = "Tabelle1" Then
If Not Intersect(Sheets(ws).Range(rng), Bereich) Is Nothing Then nm.Delete
End If
Next nm
End With
End Sub
Gruß,
Matthias
Anzeige
AW: Namen löschen mit Schmitti...
25.08.2009 19:01:50
tobi
vielen dank! ich glaub das geht so!
Echt cool!
AW: Namen löschen mit Schmitti...
25.08.2009 13:03:03
Hilfesuchender
wenn das so ausgeführt wird, tritt der Fehler "Laufzeitfehler 1004, Anwendungs- oder Objektorientierter Fehler" wieder auf!
Vielen Dank für Antworten!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige