Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
808to812
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
808to812
808to812
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Problem bei Variablenbezug auf Tabellenblatt

Problem bei Variablenbezug auf Tabellenblatt
18.10.2006 13:24:11
Peter
Guten Tag,
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 &lt= 6 Then
If arrEndziffernstärke(intCounterEz) &gt= intGrößergleich _
And arrEndziffernstärke(intCounterEz) &lt= intKleinergleich Then
For intCounterRz = 1 To 4
Call Empfehlen
Next intCounterRz
End If
ElseIf intCounterEz &gt 6 Then
If arrEndziffernstärke(intCounterEz) &lt 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

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem bei Variablenbezug auf Tabellenblatt
18.10.2006 14:29:21
Peter
Hallo Peter,
übergib deine Zell-Werte mit = Cint(Variablenblatt.Cells(2, 1))
das könnte bereits helfen.
Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
AW: Problem bei Variablenbezug auf Tabellenblatt
18.10.2006 14:55:35
Peter
Hallo Peter,
ja, jetzt klappt's tatsächlich. Großartig!
Aber warum genügt denn die Deklaration als Int in diesem Fall nicht?
Ich hab CInt bisher noch nie verwendet, trotzdem traten derartige Probleme nicht auf. Und die eine der beiden Variablen funktionierte ja auch. Mir erscheint das nicht logisch.
Aber wie auch immer - der Tip ist im Ergebnis jedenfalls sehr hilfreich.
Vielen Dank!
Peter
Anzeige
AW: Problem bei Variablenbezug auf Tabellenblatt
18.10.2006 20:27:26
Peter
Hallo Peter,
CInt wandelt den Wert der Zelle in einen 'richtigen' Integer-Wert um, was ohne diese Angeb nicht unbedingt gewährleistet ist, wie du ja gesehen hast.
CDbl, CDate usw. sind oftmals nicht nur hilfreich sondern ganz einfach 'lebensnotwendig', um zu richtigen Ergebnissen zu kommen - es wird zum richtigen Wert Convertiert
Viele Grüße Peter
AW: Problem bei Variablenbezug auf Tabellenblatt
18.10.2006 20:50:16
Peter
Stimmt, gesehen hab ich das jetzt, und so gesehen ist Dein Hinweis - auch auf die anderen "Cs" - für mich von allergrößtem Wert, weil ich mir überhaupt nicht weiterzuhelfen wußte.
Nur begreifen kann ich es nicht, weil dem Programm doch eigentlich auch so klar sein müßte, daß es sich um einen Int-Wert handelt. Wozu wird denn überhaupt deklariert, wenn Excel danach noch immer nicht weiß, um welchen Datentyp es sich handelt.
Könnte denn vielleicht auch mein Problem mit der Tabellenblatt-Ansprache, die nur per Select möglich ist (die erste der beiden Zusatzfragen) auf diese Weise lösbar sein? Dann fragt sich nur, welche Convert-Funktion ich dafür verwenden muß. Die einzig mögliche scheint mir CVar zu sein, damit werde ich es dann wohl mal versuchen.
Danke und einen schönen Abend noch.
Peter
Anzeige
AW: Problem bei Variablenbezug auf Tabellenblatt
18.10.2006 21:00:04
Konni
Hi,
in deinem Codeschnipsel ist gar keine Deklaration, besser immer den kompletten
relevanten Code posten.
mfg Konni

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige