Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1200to1204
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
Inhaltsverzeichnis

For Next Schleife bricht nach einem Durchgang ab

For Next Schleife bricht nach einem Durchgang ab
Frank
Hallo wertes Forum,
sicher ist es ein leichtes mein Anliegen zu lösen, aber ich stehe gerade auf dem Schlauch. Ich möchte die Zielwertsuche in einer Schleife durchlaufen lassen und haben anstatt der festen Werte wie bspw. B8 Cells(i,2) hingeschrieben, leider geht das nicht so wie ich mir das denke. Anbei noch ein Bild. Ich denke der Sytax für Range ist irgendwie falsch....
https://www.herber.de/bbs/user/73789.jpg
Könntet Ihr mir bitte auf die Sprünge helfen? Vielen Dank und viele Grüße
Frank
AW: For Next Schleife bricht nach einem Durchgang ab
01.03.2011 17:06:01
Rudi
Hallo,
für eine einzelne Zelle nur Cells() ohne Range() drumrum.
Gruß
Rudi
AW: For Next Schleife bricht nach einem Durchgang ab
01.03.2011 18:06:42
Frank
Hallo Rudi,
danke für deine Antwort, das habe ich auch schon versucht, aber da erscheint nach einem Durchgang Laufzeitfehler 1004 - Anwendungs- oder objektorientierter Fehler.
Könntest du bitte noch einmal schauen?
Vielen Dank und viele Grüße
Frank
AW: For Next Schleife bricht nach einem Durchgang ab
02.03.2011 10:45:35
Uwe
Guten Tag, Frank,
nach Deiner Hochgeladenen arbeitsmappe steht in der Spalte 22 (Spalte "V") keine Formel. Wenn du die Spalte 10 (Spalte "J") meinst, dann läuft die Schleife und liefert Werte. Die Werte selbst allerdings zeigen, dass da noch irgendetwas von der Programmlogik schief läuft.
Gruß,
Uwe
P.S.
Zur Frage der Zellenadressierung, wenn sie denn mit dem Objekt Range durchgeführt wird:
Range("J" & i).GoalSeek Goal:=delta, ChangingCell:=Range("B" & i)
Cells(i, "J").GoalSeek Goal:=delta, ChangingCell:=Cells(i, "B")
Cells(i, 10).GoalSeek Goal:=delta, ChangingCell:=Cells(i, 10)
Alle drei Version bewirken die gleiche Aktion mit den selben Zellenwerten. Bei der dritten sind die wenigsten internen programmtechnischen Intergretationen erforderlich, daher ist diese bei der Programmierung vorzuziehen.
Zu Referenzierungsangaben auf Elemente (Objekte, Variablen):
Generell und vereinfacht formuliert gilt, dass man auf die übergeordneten Struktur (das Objekt), in der ein Elemtent enthalten ist, durch den Vorsatz des Objektnamensnamens vor dem untergeorneten Objekt-/Elementnamen setzt und beide durch einen Punkt voneinander trennt.

With Cells(i, 4)
esu = .Value
zeta = Cells(i, 10)
.Interior.Color = 5296274
If j = 2 Then GoTo Zeta_überspringen
If zeta > zeta_value Then
.Value = 25
SolverOk SetCell:=Cells(i, 5), MaxMinVal:=3, ValueOf:=zeta_value, ByChange:=. _
Value
SolverSolve UserFinish:=True
delta = delta - 0.01
zeta_value = 0.35
j = j + 1
.Offset(0, 1).Font.Bold = True
End If
Zeta_überspringen:
If esu 
Die With-Anweisung bewirkt, dass vor jedem Punkt in diesem Block als Objekt die Zelle in der i-ten Zeile und vierten Spalte zu setzen ist, z.B. eben:

esu = Cells(i, 4).Value
zeta = Cells(i, 10)
Cells(i, 4).Interior.Color = 5296274
If j = 2 Then GoTo Zeta_überspringen
If zeta > zeta_value Then
Cells(i, 4).Value = 25
SolverOk SetCell:=Cells(i, 5), MaxMinVal:=3, ValueOf:=zeta_value, ByChange:= _
Cells(i, 4).Value
SolverSolve UserFinish:=True
delta = delta - 0.01
zeta_value = 0.35
j = j + 1
Cells(i, 4).Offset(0, 1).Font.Bold = True
End If
Zeta_überspringen:
If esu 
Die Objektvariable Value wird, wenn nichts anderes bei eienr Zuweisung geschreiben steht vom Interpreter automatisch angefügt.
Die Anweisung:
Cells(i, 4).Offset(0, 1).Font.Bold = True 

bezieht sich also auf die Zelle in der gleichen Zeile und fünften Spalte.
Anzeige
Was soll das Bild vom Code?
01.03.2011 18:43:33
Reinhard
Hallo Frank,
zeige hier den Code oder besser lad eine aussagekräftige Mappe hoch.
Gruß
Reinhard
AW: Was soll das Bild vom Code?
01.03.2011 18:57:01
Frank
Hallo Reinhard,
klare Worte und keine Absicht meinerseits. Anbei die Mappe, ich bitte um Hilfe, da der Code nicht durchläuft. Auch würde mich interessieren, wie ich Goto Schleifen umgehe.
https://www.herber.de/bbs/user/73791.xlsm
Vielen Dank und viele Grüße Frank
AW: Was soll das Bild vom Code?
01.03.2011 19:41:12
Reinhard
Hallo Frank,
mal kurz mein erster Eindruck. Du benutzt brav Dim das findes ich Klasse. Noch besser wäre es du benutzt Option Explicit, in Extras--Optionen "Variablendeklariatonen erforderlich" anhaken und fertig für neue Mappen.
Das hat hier jeder angehakt.
Du benutzt Cells(x,y)
Deklariere IMMER die Variablen für Cells, also zeilen, Spalten als LONG. Völlig uninteressant ob es nur 5 Zeilen oder 3 Spalten sind.
Das kostet zwar 4 oder so Bytes mehr, was solls, aber es spart dir was wichtigeres, Zeit. Bei 1 Mio Zellen in XL2007 kommt das zum Tragen.
Denn Vba wandelt für Cells() alles was kommt sowieso in Long um, diese zeit verschenkst du.
Dann zum Select, zu 99,9% braucht man das sowenig wie Avctivate.
Beispiel:

Range("A8:AB54").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
End With
Selection.Font.Bold = False

geht so schneller und übersichtlicher:

With Range("A8:AB54").Interior
.Pattern = xlNone
.TintAndShade = 0
End With
Range("A8:AB54").Font.Bold = False

oder ungeteset so:

With Range("A8:AB54").Interior
.Pattern = xlNone
.TintAndShade = 0
.Parent.Font.Bold = False
End With

Gruß
Reinhard
Anzeige
AW: Was soll das Bild vom Code?
01.03.2011 19:59:08
Frank
Hallo Reinhard,
vielen Dank für deine Hinweise. Ich bin Anfänger in dieser Thematik und immer dankbar, wenn jemand wie du mir eine Hilfestellung gibst. Ich habe verstanden was ich machen soll, aber so richtig klar wie du das meinst "und fertig für neue Mappen" verstehe ich nicht so recht. Mir fehlt dazu einfach der Hintergrund. Könntest du das etwas genauer erklären, bitte? Und wozu dient die Checkbox "Variablendeklarationen erforderlich"?
Zur eigentlichen Thematik: Bricht bei dir das Makro ebenfalls ab, mit der Meldung "Anwendungs oder Objektorientierter Fehler""?
Gruß Frank
AW: Was soll das Bild vom Code?
01.03.2011 20:02:38
Reinhard
Hallo Frank,
gute Einstellung, so habe ich hier auch "gelernt" bzw. bin noch dabei, alles mitnehmen was man an Hilfen bekommt und selbst testeten testen usw. bis man bzw. ich ein Aha-Erlebnis habe, dann sitzt es :-)
Der Haken sorgt dafür, ab jetzt steht atuomatisch in allen neuen mappen in Modulen das Option Explicit drinnen.
Äh, den Code habe ich noch gar nicht getestet.
Gruß
Reinhard
Anzeige
noch offen o.w.T
01.03.2011 20:04:01
Reinhard


306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige