Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

VBA-Code funktioniert nicht mehr





Frage

Hallo, in meinem Excel-VBA-Script rufe ich an einer Stelle ein Modul auf (hier: "test"), welches dafür sorgt, dass - abhängig von einer "1" in einer bestimmten Spalte - verschiedene Felder in der jeweiligen Zeile kopiert werden. Hier ein Testmodul, das anstelle der Kopier-Zeilen eine (die zweite) MsgBox enthält (die erste MsgBox dient mir nur zur Überprüfung, ob überhaupt rein gesprungen wird): Sub test() Dim myReporting_taeglich_Quelle As Range Dim myReporting_taeglich_Ziel As Range Set myReporting_taeglich_Quelle = Range("ExcName_Reporting_taeglich_Quelle") Set myReporting_taeglich_Ziel = Range("ExcName_Reporting_taeglich_Ziel") MsgBox "test" SpalteQuelle = Range(myReporting_taeglich_Quelle.Address).Column SpalteZiel = Range(myReporting_taeglich_Ziel.Address).Column intLetzteZeile = Sheets("Auswertung FM-DB-Int").Cells(Rows.Count, SpalteQuelle - 1).End(xlUp).Row For intZaehler = intLetzteZeile To 108 Step -1 If Cells(intZaehler, SpalteZiel + 6) = "1" Then MsgBox intZaehler & vbCrLf & Cells(intZaehler, SpalteZiel + 6) End If Next intZaehler End Sub Dies lief mehrere Monate gut. Inzwischen finden die Kopieraktionen aber nicht mehr statt, obwohl in der jeweiligen Zelle eine "1" steht und definitiv nach "test" gesprungen wird. Aus irgend welchen Gründen wird die "1" nicht mehr als "1" erkannt und die Kopieraktionen bleiben aus. Hat jemand eine Ahnung, warum so etwas "von heute auf morgen" nicht mehr funktioniert? Nach vielen Tests habe ich keine Lösung und auch keine Ideen mehr, was ich noch versuchen kann. Vielen Dank schon mal Jojo

Antwort 1 von Kauz

Hallo Jojo

das Einzige was mir dazu einfällt, wäre ein Formatproblem.

Also ein Unterschied zwischen einer 'echten' Eins und einem Textinhalt "1".

Ich meine, VBA kann bei Inhaltsabfragen in der Richtung auch ziemlich 'stur' sein.

Gruß
Andreas

Antwort 2 von jojo5

Hallo Andreas,

danke für die Antwort - aber das habe ich schon ausgetestet. Daran liegt es nicht.

Was ich aber noch vergessen habe (und was dieser Vermutung ebenfalls widerspricht): Wenn ich ausschließlich dieses Modul starte, funktioniert es einwandfrei ...

Wenn ich jedoch den gesamten VBA-Code laufen lasse, geht er - wie ich oben geschrieben habe - definitiv zwar in dieses Modul rein (mit "Call test"), stellt dann aber nicht fest, in welchen Zellen eine 1 steht. Ich habe auch den Modulaufruf an die erste Stelle des VBA-Codes gesetzt - negativ. Außerdem habe ich den Inhalt des Moduls "test" direkt in den VBA-Code kopiert - negativ.

Hoffentlich hat von euch noch jemand eine Idee - und wenn's "nur" weitere Testmöglichkeiten sind.

Viele Grüße
Jojo

Antwort 3 von jojo5

Hallo,

an alle, die vielleicht ein ähnliches Problem haben: Ich hab' die Ursache gefunden, juhu!

Also: Aus Performancegründen habe ich kürzlich meinen VBA-Code so umgestellt, dass keine selects mehr enthalten sind. Und genau da habe ich den Fehler selbst eingebaut. Denn mit dem Befehl

For intZaehler = intLetzteZeile To 108 Step -1
If Cells(intZaehler, SpalteZiel + 6) = "1" Then

sucht er in dem Tabellenblatt, in dem er sich gerade befindet nach der Zelle mit der 1. Und das war nicht das gewünschte Tabellenblatt (vor der Umstellung hatte ich dieses Tabellenblatt explizit selektiert).

D.h. mit der simplen Ergänzung

If Sheets("Auswertung FM-DB-Int").Cells(intZaehler, SpalteZiel + 6) = "1" Then

funktioniert alles wie vorgesehen. Ufffff

Vielleicht hilft mein stundenlanges Suchen wenigstens jemandem von euch.

Viele Grüße
Jojo

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: