HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Forumbeitrag
Excel-Version des Fragestellers:
365 privat
Erfahrungslevel des Fragestellers:
Basiskenntnisse in VBA
Christian
09.12.2024 17:49:33
AW: komplettes Makro
Hallo Daniel,

dann muss ich dich jetzt fragen, was du mir raten würdest. Das ' hat den Zweck, dass nicht wenn z.b. als Rückgabewert des XVERWEIS 9-1-1 steht daraus 09.01.2001 gemacht wird, sondern 9-1-1 beibehalten wird. Das soll auf jeden Fall so bleiben.
Die anderen Formeln haben das nicht, weil da sowas nicht vorkommt.

Welchen Weg würdest du mir dann raten? Deinen bereits gemachten Alternativvorschlag oder das ' durch eine andere Lösung ersetzen?

BItte bei deinem Vorschlag auch bedenken, das was du jetzt gesehen hast hat ca 8-9% der Ausmaße die es mal haben wird, wenn es fertig ist, mir liegt also auch Ausführzeit des Makros am Herzen.

Danke
Christian
Als Antwort auf diesen Beitrag
daniel
09.12.2024 16:51:08
AW: komplettes Makro
ja, denken ist manchmal schlecht.

die Ursache für deinen Fehler liegt in dieser Zeile:

        ' Formeln für Spalten N, O, Q, R

wsNV.Range("N" & startZeile & ":N" & letzteZeileM).FormulaLocal = _
"=""'"" & XVERWEIS(M" & startZeile & ";$D$254:$D$" & letzteZeileD & ";$E$254:$E$" & letzteZeileD & ";"""";0;1)"


du stellst hier dem Ergebnis noch das Hochkomma ' voraus (.FormulaLocal = "=""'"" & ...)
das Hochkomma ist das Texterkennungszeichen für Excel, dh wenn du was in eine Zelle schreibst, das das mit dem Hochkomma beginnt, dann ist das immer Text.
dh wenn du hinterher die Formeln in Werte wandelst, bleiben sie auch bei einem XVerweis-Ergebnis "" technisch gesehen Text (halt ohne Zeichen) und diese Zellen werden keine Leerzellen (obwohl sie so aussehen)
damit wird hier auch deine spätere Prüfung mit If IsEmpty() nicht TRUE sondern bleibt FALSE, weil diese Zellen Text enthalten.
somit bekommst du auch für Spalte N kein Ergebnis.

Abhilfe wäre also, dass du hier das Hochkomma in der Formel weglässt, so wie in den anderen Formeln auch.
Sollte das Hochkomma an dieser Stelle aus einem anderen Grund notwendig sein, dann kannst auch die Prüfung auf Leerzelle so machen:
If datenN(j, 1) = ""  Then uniqueN(datenM(j, 1)) = True


das ="" ist da weniger sensibel als das IsEmpty, weil es eben auch bei einem Text ohne Inhalt ein TRUE ergibt und nicht nur bei einer echten Leerzelle.

Gruß Daniel
Folgenachrichten
Antwort auf Beitrag erstellen

Beispieldatei hochladen