Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
868to872
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
868to872
868to872
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

If und For zusammen?

If und For zusammen?
09.05.2007 16:01:12
Julia
Hallo zusammen.
Ich habe hier ein Teil meines Programm, alles funktionier bis auf dieses Teil hier unten.
Es soll folgendes passieren:
Es soll überprüft werden, ob der Vektor langrange alle positiven Einträrge hat, wenn nicht, dann soll diese Meldung
MsgBox "Kein KKT-Punkt." & vbCrLf & "Fürhen Sie bitte den Schritt 2 durch!", vbInformation + vbOKOnly
und eine Wertzuweisung
Range(Cells(15 + n + m + 10 + p, 4 + n + 2 * m), Cells(15 + n + m + 10 + p, 4 + n + 2 * m)).Select
Selection.Value = "nein"
kommen.
Wenn doch, also wenn lagrange komplett positiv ist, dann muss noch geprüft werden ob berechnung=0 ist, und dann wenn diese beide Bedingungen erfüllt sind, die Meldung
MsgBox "Ein KKT-Punkt." & vbCrLf & "Ihr Optimierer ist der x", vbInformation + vbOKOnly
mit
Range(Cells(15 + 10 , 4 ), Cells(15 + 10 , 4 )).Select
Selection.Value = "ja"

ausgeben.
Es funktioniert aber nicht, und ich weiss nicht woran es liegen kann.

Public Sub Schritt_2()
Dim lagrange#()
Dim berechnung%
berechnung=0
ReDim lagrange(m)
For j = 1 To m
lagrange(j) = Cells(15 , j)
Next j
For j = 1 To m
If lagrange(j) 


Es müssen also beide Bedingungen erfüllt sein um entsprechende Meldung (mit "ja") ausgeben zu dürfen, ansonsten muss die andere Meldung (mit "nein") kommen.
Ich werde mich sehr freuen, wenn mir jemand helfen könnte.
Gruß
Julia

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: If und For zusammen?
09.05.2007 16:12:00
Armin
Hallo Julia,
Dein Variable "m" hat in dem Code keinen Wert!
(m = 5 oder was auch immer.)

AW: If und For zusammen?
09.05.2007 16:16:04
Julia
Hallo Armin,
daran liegt es nicht, m wird durch Dialog-Abfrage übergeben.
Ich habe wohl vergessen es zu sagen.

AW: If und For zusammen?
09.05.2007 16:27:00
Armin
Hallo Julia,
also wenn Du Code ins Forum stellst und erwartest, dass jemand Dir hilft, bitte vorher mal drüber schaun ob das so überhaupt möglich ist. Es fehlen alle Werte n,p, usw. Diese Variablen haben in Deinem Code keine Wertzuweisung.
Gruß Armin

AW: If und For zusammen?
09.05.2007 16:24:00
Erich
Hallo Julia,
wenn ich dich richtig verstanden habe, könnte das so funzen:

Option Explicit
Public Sub Schritt_2()
Dim lagrange#()
Dim berechnung%
Dim m As Integer, j As Integer, n As Integer, p As Integer ' Deklarationen fehlten
m = 5    ' Test
n = 2    ' Test
p = 3    ' Test
berechnung = 0
ReDim lagrange(m)
For j = 1 To m
lagrange(j) = Cells(15, j)
Next j
For j = 1 To m
If lagrange(j)  m And berechnung = 0 Then
MsgBox "Ein KKT-Punkt." & vbCrLf & "Ihr Optimierer ist der x", _
vbInformation + vbOKOnly
Cells(15 + 10, 4) = "ja"
End If
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: If und For zusammen?
09.05.2007 16:46:11
Julia
hallo Erich, natürlich funktioniert das,
DANKE! DANKE! DANKE!!!!!
Danke auch für den Tipp, dass mit den Range, was nicht nötig gewesen war!!
Es tut mir leid, dass ich die Variablen m,p.. nich deklariert habe, ich war mir sicher, dass ich sie alle gelöscht habe, damit sie nicht irretiernd wirken. Natürlich könnte dieses Teile des programms so nicht funtionieren.
Aber nochmals Danke!
Schöne Grüße nach Kamp-Lintfort.
Julia

Danke für Rückmeldung - Gerne! (oT)
09.05.2007 16:48:53
Erich

AW: If und For zusammen?
09.05.2007 16:37:48
mpb
Hallo Julia,
versuchs mal so (ungetestet):
</p><pre>Public Sub Schritt_2()
Dim lagrange#()
Dim berechnung%
berechnung = 0
ReDim lagrange(m)
For j = 1 To m
lagrange(j) = Cells(15, j)
Next j
For j = 1 To m
If lagrange(j) < 0 Then
MsgBox "Kein KKT-Punkt." & vbCrLf & "Fürhen Sie bitte den Schritt 2 durch!", vbInformation + vbOKOnly
Range(Cells(15 + n + m + 10 + p, 4 + n + 2 * m), Cells(15 + n + m + 10 + p, 4 + n + 2 * m)) = "nein"
Exit For 'nur, wenn beim ersten negativen Wert abgebrochen werden soll
End If
Next j
If berechnung <> 0 Then
MsgBox "Kein KKT-Punkt." & vbCrLf & "Fürhen Sie bitte den Schritt 2 durch!", vbInformation + vbOKOnly
Range(Cells(15 + n + m + 10 + p, 4 + n + 2 * m), Cells(15 + n + m + 10 + p, 4 + n + 2 * m)) = "nein"
Else
MsgBox "Ein KKT-Punkt." & vbCrLf & "Ihr Optimierer ist der x", vbInformation + vbOKOnly
Range(Cells(15 + 10, 4), Cells(15 + 10, 4)) = "ja"
End If
End Sub</pre><p>
Achtung: Berechnung = 0 ist bei Deinem Code immer erfüllt, da dies am Anfang so gesetzt und dann während des Ablaufs nicht mehr geändert wird.
Gruß
Martin

Anzeige
AW: If und For zusammen?
09.05.2007 16:50:11
Julia
Hallo Martin,
ich habe schon eine Lösung von Erich bekommen, die funktionier. Aber für Deine Mühe möchte ich dir trotz dem danken, dass sieht auch ganz gut auch , werde jetzt ausprobieren
Gruß
Julia

AW: If und For zusammen?
09.05.2007 17:06:00
Julia
Hallo Martin,
ich habe soeben dein Vorschlag ausprobiert, und ich muss Dich enttäuschen, dass funktionier nich so richtig.
Es passiert folgendes:
Wenn lagrange (sobald der erster negativer Eintrag gefunden wird), negativ ist, erscheint zwar die MsgBox mit der richtigen Meldung und "ja" wird richtig gesetzt, aber dann wenn man "OK" betätigt hat, erscheidt sofort die andere Meldung, der "ja"-Eintrag wird dann mit "nein" überschrieben.
D.h., dass alle Meldungen, unabhängig davon, welch Bedingung erfüllt war, ausgegeben werden, dass also die Schleife nach dem Nichterfüllen der ersten Bedingung nicht verlassen wrid und die zweite Anweisung ebenfalls ausgeführ wird.
Genau dieses Problem hatte ich auch.
Aber Du brauchst Dir darüber keine Gedanken mehr machen, ich habe ja schon eine Lösung.
Danke Dir.
Gruß
Julia
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige