Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

anwendungs oder Objektorientierter Fehler

Forumthread: anwendungs oder Objektorientierter Fehler

anwendungs oder Objektorientierter Fehler
22.04.2025 19:45:22
Christian
Hallo,

bitte helft mir, es geht um diese Mappe

https://www.herber.de/bbs/user/177123.xlsm

Warum kommt beim Duplikate entfernen Anwendungs- oder objektorientierter Fehler?

Gruß
Christian
Anzeige

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: anwendungs oder Objektorientierter Fehler
22.04.2025 19:55:06
BoskoBiati
Hi,

was ist denn das für eine Variable:

letzteZeileErgebnis3

?

Gruß

Edgar
AW: anwendungs oder Objektorientierter Fehler
22.04.2025 20:25:55
Ulf
HI,
du hast eine "Tabelle5" bis Zeile 426, gefunden werden aber alle Zeilen.
Tabelle entfernen-fertsch
hth
Ulf
AW: anwendungs oder Objektorientierter Fehler
22.04.2025 23:22:01
Yal
Hallo Christian,

zusammengefasst,
entweder (v1) Tabelle "in Bereich konvertieren" und
Sub viertesMakro()

Dim letzteZeileErgebnis3 As Range

With ThisWorkbook.Sheets("Ergebnis3")
Set letzteZeileErgebnis3 = .Cells(Rows.Count, "A").End(xlUp)
.Range("AA1", letzteZeileErgebnis3).RemoveDuplicates Columns:=Array(23, 4), Header:=xlYes
End With
End Sub
Erklärung: es ist keine Unterschied, ob ein Bereich A1:AAx oder Ax:AA1 definiert wird. Gespeichert wird in beide Fälle als A1:AAx.

oder (v2) Tabelle5 bis tatsächliche letzte Zeile erweitern und dann
Sub viertesMakro()

Range("Tabelle5").RemoveDuplicates Columns:=Array(23, 4), Header:=xlYes
End Sub


Die Tabelle auf die letzte Zeile zu erweitern geht so:
Sub Tabelle_erweitern()

With Range("Tabelle5")
.ListObject.Resize Range("$AA$1", .Parent.Cells(Rows.Count, "A").End(xlUp))
End With
End Sub

Direkt in Version 2 eingebaut sieht es dann so aus:
Sub viertesMakro()

With Range("Tabelle5")
.ListObject.Resize Range("$AA$1", .Parent.Cells(Rows.Count, "A").End(xlUp))
.RemoveDuplicates Columns:=Array(23, 4), Header:=xlYes
End With
End Sub

VG
Yal
Anzeige
AW: anwendungs oder Objektorientierter Fehler
22.04.2025 23:47:48
Christian
Hallo Yal,

sei mir nicht böse aber mir fallen die Augen bald zu. Werde ich morgen testen, ok?

Schonmal vielen Dank
Christian
AW: anwendungs oder Objektorientierter Fehler
23.04.2025 09:38:32
Christian
Hallo Yal,

vielen Dank erstmal.

Zu den Testergebnissen.
In normalen Bereich umwandeln kommt nicht in Frage, ich brauche die Tabelle auch für PQ Auswertungen, (an die ich mich heute setzen wollte).

Dein Vorschlag mit Anpassung der Größe funktioniert, wenn ich ihn in den Code des Blatts Ergebnis3 schreibe.
Ich werde allerdings meine bereits gepostete Lösung beibehalten, weil ich in meiner Mappe nur in Modulen arbeite, nicht in den Codes einzelner Blätter.

Gruß
Christian

   

Dim lo As ListObject
Dim wsErgebnis3 As Worksheet
Set lo = wsErgebnis3.ListObjects("Tabelle5")
letzteZeileErgebnis3 = wsErgebnis3.Cells(wsErgebnis3.Rows.count, "A").End(xlUp).Row
lo.Resize wsErgebnis3.Range("A1:AA" & letzteZeileErgebnis3)

With wsErgebnis3
.Range("A1:AA" & letzteZeileErgebnis3).RemoveDuplicates Columns:=Array(23, 4), Header:=xlYes
End With


ich weiß das geht auch kürzer, aber ich mache es so um in diesen großen Makros besser den Überblick behalten zu können.
Anzeige
AW: anwendungs oder Objektorientierter Fehler
23.04.2025 13:24:34
Yal
Hallo Christian,

ich finde es eine Unverschämtheit, dass Du nicht SOFORT alles testet, was man dich über den Zaun wirft ;-)

Ein benannte Bereich ist innerhalb eines Workbooks einmalig. Daher sollte der Aufruf Range("Tabelle") von überall innerhalb des Workbooks funktionieren.
Darauf kann man
Range("Tabelle5").ListObject -> die Tabelle-Objekt "Tabelle5"
und
Range("Tabelle5").Parent -> das Worksheet, in dem "Tabelle5" vorliegt.

daher 2 möglichen Code (alle gleichwertig):
With ThisWorkbook.Worksheets("Ergebnis3").ListObjects("Tabelle5")

.Resize .Parent.Range("AA1", .Parent.Cells(Rows.Count, "A").End(xlUp))
.RemoveDuplicates Columns:=Array(23, 4), Header:=xlYes
End With
oder
With ThisWorkbook.Worksheets("Ergebnis3")

.ListObjects("Tabelle5").Resize .Range("AA1", .Cells(Rows.Count, "A").End(xlUp))
.ListObjects("Tabelle5").RemoveDuplicates Columns:=Array(23, 4), Header:=xlYes
End With

Aber der beste Code ist der Code, den Du verstehst und damit zurecht kommst.

VG
Yal
Anzeige
AW: anwendungs oder Objektorientierter Fehler
23.04.2025 13:51:42
Christian
Hallo Yal,

ich gehe dann mal davon aus, dass dein erster Satz ironisch gemeint war...

Danke für die Erklärung.

Aber nichtsdestotzotz, ich hatte geschrieben dass ich bei meinem bleibe, weil ich nicht anfangen will Codes zu nutzen, die ich in den Code eines Tabellenblatts stecken muss, wenn ich gleichzeitig funktionierende Codes habe, die meiner üblichen Struktur entsprechen.

Mischmasch wollte ich keinen anfangen und jetzt damit beginnen, den Code von 14 Modulen (ich mache ein Modul pro Sub) auf einzelne Blätter aufzuteilen, sehe ich auch keinen Sinn drin.

Zu den beiden Codes, bei beiden bekomme ich beim Dupl. Entfernen, dass Methode oder Eigenschaft nicht unterstützt wird, egal ob im Modul oder im Blatt, egal ob in der Bsp oder der Originaldatei.

Aber ich bin jetzt auch mal so ehrlich zu dir. Wir versuchen hier jetzt einen Code auf die Beine zu stellen, den ich natürlich testen würde und dir auch weiterhin Rückmeldung geben würde, aber in Realität sieht es so aus, dass das nur noch an einer Testdatei erfolgt. Im Original sind die Duplikate längst entfernt mit meinen funktionierenden Codes und ich arbeite längst an anderen Ecken weiter.
Also um ehrlich zu sein, alles was wir jetzt weiter machen würden, wäre nur noch für die Gallerie.

Gruß
Christian



Anzeige
AW: anwendungs oder Objektorientierter Fehler
22.04.2025 20:48:15
Christian
Hallo Ulf,

die Tabelle hab ich angelegt, um sie dann mit PQ weiterzuverarbeiten.
Aber hab verstanden, es liegt an der unpassenden Größe von Tabelle5.

Aber die Tabellengröße von Tabelle5 lässt sich doch bestimmt im VBA Code anpassen vor dem Duplikate entfernen.
Ich wurschtele mal rum, das bekomme ich denke ich selber hin.

Melde mich dann gleich wieder.

Gruß
Christian
Anzeige
AW: anwendungs oder Objektorientierter Fehler
22.04.2025 20:53:24
Christian
hab jetzt die Zeile lo.Resize wsErgebnis3.Range("A1:AA" & letzteZeileErgebnis3) eingefügt, jetzt klappts.

Danke für eure Hilfe
Christian
AW: anwendungs oder Objektorientierter Fehler
22.04.2025 19:57:11
BoskoBiati
Hi,

streiche meinen Beitrag, habe was überlesen. Allerdings muß man sprechende Bezeichnungen nicht so ausufern lassen!

Gruß

Edgar
Anzeige
AW: anwendungs oder Objektorientierter Fehler
22.04.2025 20:02:18
Christian
Sorry das hat sich mit meiner vorigen Nachricht überschnitten.

Das originale 4. Makro ist so riesigt, ich hab das mit den sprechenden Namen gemacht um nicht den Überblick zu verlieren.
Habs jetzt auf die paar Zeilen beschränkt, weil das die einzigen sind, die mit dem Duplikate Entfernen zu tun haben.

Gruß
Christian
Anzeige
AW: anwendungs oder Objektorientierter Fehler
22.04.2025 20:00:07
Christian
Hallo Edgar,

danke für deine Antwort.
ich weiß nicht worauf du mit der Frage hinauswillst.
Was sie bezwecken soll sagt ja bereits der Name, einen Syntaxfehler sehe ich nicht (oder bin blind).

Gruß
Christian
AW: anwendungs oder Objektorientierter Fehler
22.04.2025 20:01:12
cysu11
Sollen die Duplikate in Spalte 23 entfernt werden?
AW: anwendungs oder Objektorientierter Fehler
22.04.2025 20:04:51
Christian
Hallo Alexandra,

nein im gesamten Bereich A:AA, Spalte 23 und 4 (W und D) sind die Kriterien, in denen die Duplikate stehen.

Gruß
Christian
Anzeige
AW: anwendungs oder Objektorientierter Fehler
22.04.2025 20:13:19
BoskoBiati
Hi,


es gibt in den beiden Spalten keine Duplikate!

Gruß

Edgar
AW: anwendungs oder Objektorientierter Fehler
22.04.2025 20:41:22
Christian
Hallo Edgar, ich fürchte da ist dann wirklich ein Denkfehler in meinem Code.

Im Beispiel haben z.B. die Zeilen 2 und 428 sowohl in Spalte D als auch W dieselben Texte, demnach hätte es als Duplikat erkannt werden sollen.
Gruß
Christian
Anzeige
AW: anwendungs oder Objektorientierter Fehler
22.04.2025 20:56:07
Christian
sorry auf die Idee die Tabellengröße zu prüfen kam ich erst nach diesem Beitrag. Bezogen auf das Listobject hattest du selbstverständlich recht, dass es keine Duplikate gibt. Auch dir danke für die Hilfe.

Christian
AW: anwendungs oder Objektorientierter Fehler
22.04.2025 20:29:10
cysu11
Sub viertesMakro()
Dim myT As ListObject
Set myT = ActiveSheet.ListObjects("Tabelle5")
myT.Range.RemoveDuplicates Columns:=Array(4, 23), Header:=xlYes
End Sub
Anzeige
AW: anwendungs oder Objektorientierter Fehler
22.04.2025 20:54:54
Christian
Hallo Alexandra,

das hat leider nicht funktioniert, weil die Tabellengröße des ListObjects zu dem Zeitpunkt als ich das getestet hatte noch nicht gepasst hat.
Nach Anpassung dieser hats geklappt.

DAnke
Christian
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18