ich habe folgendes Problem:
Die untenstehende Schleife enthält u. a. die Variablen intGrößergleich und intKleinergleich, deren Werte aus einem Tabellenblatt entnommen werden. Nun verhalten sich aber beide Zellbezüge, obwohl sie doch gleichartig sind, auf verschiedene Weise merkwürdig.
Da ich an dieser Stelle ursprünglich keine Variablen verwenden wollte, setzte ich zunächst nur den zu intKleinergleich gehörenden Zellbezug "Variablenblatt.Cells(2, 2)" ein. Aus mir unerfindlichen Gründen wurden dann aber falsche Werte ausgegeben. Sobald ich den Zellbezug in die Variable "verpackte", kam das richtige Ergebnis. Das ist eigenartig, aber immerhin durch den Variableneinsatz behebbar.
Bei der Variablen intGrößergleich funktioniert dagegen nicht nur der direkte Zellbezug, sondern auch die Variable nicht - es werden falsche Ergebnisse geliefert, so als sei die Zelle leer. Wenn ich aber die Variable über eine MsgBox zurückgeben lasse, erhalte ich den richtigen Wert. Wenn ich den in der Zelle stehenden Wert als Konstante eingebe, erhalte ich ebenfalls richtige Werte. Nur wenn ich die Variable in der Schleife verwende, kommen falsche Ergebnisse heraus.
Weiß jemand dafür eine Erklärung und vor allem eine Möglichkeit, das Problem zu beheben?
intGrößergleich = Variablenblatt.Cells(2, 1)
intKleinergleich = Variablenblatt.Cells(2, 2)
For intCounterEz = 0 To 9
intRestzahl = intCounterEz
intSchwächstEz = intCounterEz
If intCounterEz <= 6 Then
If arrEndziffernstärke(intCounterEz) >= intGrößergleich _
And arrEndziffernstärke(intCounterEz) <= intKleinergleich Then
For intCounterRz = 1 To 4
Call Empfehlen
Next intCounterRz
End If
ElseIf intCounterEz > 6 Then
If arrEndziffernstärke(intCounterEz) < 3 Then
For intCounterRz = 1 To 3
Call Empfehlen
Next intCounterRz
End If
End If
Next intCounterEz
Und noch zwei Zusatzfragen zu Merkwürdigkeiten in Verbindung mit dem Auslesen von Tabellenblattinhalten durch VBA, die ich mir ebenfalls nicht erklären kann:
- Die o. a. Prozedur bezieht sich auf zwei in der Mappe enthaltene Tabellenblätter ("Variablenblatt" und "Berechnung"). Wenn nun bei Aufruf der Prozeduren das "Variablenblatt" aktiviert ist, dann stürzt Excel ab. Wenn ich dagegen eingangs mit Select "Berechnung" aktiviere, dann läuft alles ordnungsgemäß. Normalerweise müßte es doch möglich sein, beide Blätter ohne Select-Befehl auszulesen?
- In der Arbeitsmappe eines Bekannten sind die Variablenbezeichnungen für eine Prozedur ebenfalls in einem Tabellenblatt angegeben und können vor dem Prozeduraufruf über Eingabe in bestimmte Zellen des Blattes ausgewählt werden. Wenn man die beiden für eine dieser Zellen möglichen Variablenbezeichnungen direkt in die betreffende Zelle hineinschreibt, dann läuft die Prozedur jeweils entsprechend der Variablenauswahl ab. Wenn man dagegen die Variablen durch Kopieren oder Drag-and-Drop dorthin überträgt, dann erkennt VBA offenbar nur die eine der beiden Variablenbezeichnungen und spult das Programm auch mit der anderen Variablen immer nur auf eine Art ab. Wie ist das möglich?
Ich würde mich freuen, wenn mir jemand hier das eigenartige und für mich ganz unlogische Verhalten von Excel in diesen Punkten erklären kann.
Mit freundlichem Gruß
Peter