Thema Datum  Von Nutzer Rating
Antwort
17.06.2009 23:00:23 Sabine
NotSolved
18.06.2009 14:06:35 Holger
NotSolved
18.06.2009 23:52:25 Sabine
NotSolved
Blau Aw:Aw:Aw:Nullstellen, Maxima und Minima markieren
19.06.2009 08:10:03 Holger
NotSolved
23.06.2009 14:43:24 Sabine
NotSolved
22.06.2009 07:58:33 Sabine
NotSolved

Ansicht des Beitrags:
Von:
Holger
Datum:
19.06.2009 08:10:03
Views:
972
Rating: Antwort:
  Ja
Thema:
Aw:Aw:Aw:Nullstellen, Maxima und Minima markieren
Hallo Sabine,
du hast ja recht. Ich habe die Größer- und Kleinerzeichen händisch aus dem Code entfernt und dabei wohl etwas übersehen. Die Software des forums versteht diese Zeichen teilweise als Steuerzeichen, wodurch Teile des Codes verschwinden. Leider hatte ich keine Zeit mehr, weshalb ich die Darstellung nach dem Absenden nicht mehr überprüft hatte. Es kann sein, dass ich auch noch weitere Änderungen im Code vorgenommen hatte, nachdem ich ihn hierhier kopiert hatte. Die Kommentare wiederhole ich nicht.

Sub max_min()
Zeile1 = 8
Spalte1 = 2
farbemax = 3
farbemin = 5

Cells.Interior.ColorIndex = xlNone
For j = Spalte1 To Cells(8, Columns.Count).End(xlToLeft).Column
s = Sgn(Cells(Zeile1 + 1, j) - Cells(Zeile1, j))
If s = 0 Then
For i = Zeile1 To Cells(Rows.Count, j).End(xlUp).Row - 1
t = Sgn(Cells(i + 1, j) - Cells(i, j))
If t kleiner größer 0 Then Exit For
Next i
If i kleiner Cells(Rows.Count, j).End(xlUp).Row - 1 Then
If t = -1 Then
Cells(Zeile1, j).Interior.ColorIndex = farbemax
Else
Cells(Zeile1, j).Interior.ColorIndex = farbemin
End If
End If
End If
For i = Zeile1 To Cells(Rows.Count, j).End(xlUp).Row - 1
If (Sgn(Cells(i + 1, j)) kleiner größer Sgn(Cells(i, j))) Or Cells(i, j) = 0 Then 'Nullstellen
Cells(i, j).Font.Bold = True
End If
Select Case Cells(i + 1, j) - Cells(i, j)
Case Is kleiner 0
If s kleiner größer -1 Then
s = -1
Cells(i, j).Interior.ColorIndex = farbemax
End If
Case Is größer 0
If s kleiner größer 1 Then
s = 1
Cells(i, j).Interior.ColorIndex = farbemin
End If
Case Else
If i größer Zeile1 Then
Cells(i, j).Interior.ColorIndex = Cells(i - 1, j).Interior.ColorIndex
End If
End Select
Next i
Next j
End Sub

Zu deinen Fragen:
Wenn du Do-Loop-Schleifen (oder auch anderes) verschachteln willst, musst du nur darauf achten, dass immer zuerst die Inneren und dann die äußeren durchlaufen werden:
do until Bedingung1
Anweisungen 1
do
Anweisungen2
loop while Bedingung2
Anweisungen3
loop
Hier wird zuerst geprüft, ob die Bedingung 1 erfüllt ist. Ist sie das, werden beide Schleifen übersprungen und der Code nach dem 2. Loop fortgesetzt. Ist sie es nicht, werden die Anweisungen 1 einmal ausgeführt und die 2. Do-Loop-Schleife gestartet. Diese wird so lange ausgeführt, wie die Bedingung 2 erfüllt ist, mindestest aber einmal, weil die Bedingung erst nach der Schleife abgefragt wird. Ist Bedingung 2 nicht mehr erfüllt, werden die Anweisungen 3 ausgeführt und das Spiel beginnt mit der Prüfung der Bedingung 1 von Neuem.
Ein Deklarieren der Variablen ist dann zwingend erforderlich, wenn du die Option Explicit gesetzt hast. Ansonsten schadet das Deklarieren nicht, ist aber nicht notwendig, da die Variablen dann standardmäßig auf Variant gesetzt sind. Das Nichtdaklarieren verbraucht zwar etwas mehr Speicherplatz und Rechenzeit, was aber bei den heutigen Rechnern keine große Rolle mehr spielt. Es gibt Programmierer, die großen Wert auf das Deklarieren legen. Ich bin aber für kurze Programme zu faul dazu.
Gruß
Holger


Sabine schrieb am 18.06.2009 23:52:25:

Hallo Holger,
erst einmal vielen Dank für Dein Interesse und die schnelle Antwort. Leider läuft Dein Makro nicht.

Bei der 3. If-Anweisung fehlt wahrscheinlich nur ein Gleichheitszeichen?

End Select bezieht sich auf eine Anweisung die nicht gegeben wurde?.

Wie verschachtelt man Do-Loop-Schleifen oder muss ich sie nacheinander schreiben?

Muss ich die Variablen am Anfang nicht deklarieren?

Vielleicht kannst Du mir noch mal helfen. Ich kann Deine Antwort aber erst Montag abrufen.

Liebe Grüße

Sabine




Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
17.06.2009 23:00:23 Sabine
NotSolved
18.06.2009 14:06:35 Holger
NotSolved
18.06.2009 23:52:25 Sabine
NotSolved
Blau Aw:Aw:Aw:Nullstellen, Maxima und Minima markieren
19.06.2009 08:10:03 Holger
NotSolved
23.06.2009 14:43:24 Sabine
NotSolved
22.06.2009 07:58:33 Sabine
NotSolved