online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon VBA-Rookie vom 10.12.2020, 14:41 Options

Hilfe: Codes vereinfachen: Loop?

Hi Leute

Ich habe folgendes "programmiert" ohne jemals VBA gelernt zu haben (also mit lesen + foren):

------
Public Function Wait(MilliSekunden As Double)
Dim I As Double, Ende As Double
Ende = Timer + (MilliSekunden / 10000)
Do While I < Ende
DoEvents
I = Timer
Loop
End Function

Private Sub Worksheet_calculate()

Wait 50000

If Range("H3").Value = "O" Then
If Range("J3").Value >= Range("I3").Value Then
MsgBox Range("K3")
End If
If Range("J3").Value >= Range("I3").Value Then
Range("J3").ClearContents
End If

ElseIf Range("H3").Value = "U" Then
If Range("J3").Value <= Range("I3").Value Then
MsgBox Range("K3")
End If
If Range("J3").Value <= Range("I3").Value Then
Range("J3").Value = "Ausgestoppt"
End If

End If


'Zeile4

If Range("H4").Value = "O" Then
If Range("J4").Value >= Range("I4").Value Then
MsgBox Range("K4")
End If
If Range("J4").Value >= Range("I4").Value Then
Range("J4").ClearContents
End If

ElseIf Range("H4").Value = "U" Then
If Range("J4").Value <= Range("I4").Value Then
MsgBox Range("K4")
End If
If Range("J4").Value <= Range("I4").Value Then
Range("J4").Value = "Ausgestoppt"
End If

End If

etc. etc. etc.


Wie kann ich das bis Zeile 50 machen? 50 mal CopyPaste??? Geht sicher einfacher!!! Mit Loop oder For Next hab ich es leider nicht hinbekommen!!
Die Wait Pause musste ich reintun da, bevor die RealTimekurse aus Bloomberg importiert werden, das ganze ständig Fehlermeldungen gibt!!


Antwort schreiben

Antwort 1 von nighty vom 15.12.2020, 08:06 Options

hi all

hier ein beispiel einer schleife

gruss nighty

For zaehler = 3 To 53
If Range("H" & zaehler).Value = "O" Then
If Range("J" & zaehler).Value >= Range("I" & zaehler).Value Then
MsgBox Range("K" & zaehler)
End If
If Range("J" & zaehler).Value >= Range("I" & zaehler).Value Then
Range("J" & zaehler).ClearContents
End If
ElseIf Range("H" & zaehler).Value = "U" Then
If Range("J" & zaehler).Value <= Range("I" & zaehler).Value Then
MsgBox Range("K" & zaehler)
End If
If Range("J" & zaehler).Value <= Range("I" & zaehler).Value Then
Range("J" & zaehler).Value = "Ausgestoppt"
End If
End If
Next zaehler


nicht zu vergessen die ereignisabschaltung,aufrufbar mit call Name,jeweils am anfang wie ende zu setzen

Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub

Public Sub EventsOn()
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub

Antwort 2 von nighty vom 15.12.2020, 08:17 Options

hi all

fuer die ereignisabschaltung war dies nur ein beispiel

gruss nighty

Antwort 3 von VBA-Rookie vom 16.12.2020, 14:59 Options

Vielen Dank Nighty. Genau das habe ich nicht hinbekommen, das mit dem ZAEHLER !!!¨Besten Dank.

Sorry, aber wofrür ist die Ereignisabshaltung? Braucht ich die hier? Das einzige was mir jetz noch fehlt ist das beim Excel-File-Start diese Calculation 5 sekunden wartet (also eigentlich erst beginnt wenn die Kurse aus dem Bloomberg anfangen= erscheinen....... sonst kommt immer ein Fehler bis alle Kurse ersichtlich sind)

So funktioniert es irgendwie nicht:

Private Function Wait(MilliSekunden As Double)
Dim I As Double, Ende As Double
Ende = Timer + (MilliSekunden / 10000)
Do While I < Ende
DoEvents
I = Timer
Loop
End Function


Private Sub Worksheet_calculate()
Wait 50000
For zaehler = 3 To 50
If Range("H" & zaehler).Value = "O" Then
If Range("J" & zaehler).Value >= Range("I" & zaehler).Value Then
MsgBox Range("K" & zaehler)
End If
If Range("J" & zaehler).Value >= Range("I" & zaehler).Value Then
Range("J" & zaehler).ClearContents
End If
ElseIf Range("H" & zaehler).Value = "U" Then
If Range("J" & zaehler).Value <= Range("I" & zaehler).Value Then
MsgBox Range("K" & zaehler)
End If
If Range("J" & zaehler).Value <= Range("I" & zaehler).Value Then
Range("J" & zaehler).Value = "Ausgestoppt"
End If
End If
Next zaehler

End Sub


So schon aber nur mit diesem Fehler zu beginn:
Private Sub Worksheet_calculate()

For zaehler = 3 To 50
If Range("H" & zaehler).Value = "O" Then
If Range("J" & zaehler).Value >= Range("I" & zaehler).Value Then
MsgBox Range("K" & zaehler)
End If
If Range("J" & zaehler).Value >= Range("I" & zaehler).Value Then
Range("J" & zaehler).ClearContents
End If
ElseIf Range("H" & zaehler).Value = "U" Then
If Range("J" & zaehler).Value <= Range("I" & zaehler).Value Then
MsgBox Range("K" & zaehler)
End If
If Range("J" & zaehler).Value <= Range("I" & zaehler).Value Then
Range("J" & zaehler).Value = "Ausgestoppt"
End If
End If
Next zaehler

End Sub


Wenn es geht wär der Einbau einer Pause (oder die Lösung dieses Problems) WIRKLICH SUPER NETT VON DIR

Antwort 4 von nighty vom 16.12.2020, 18:50 Options

hi all

eine pause waere das eine variante

gruss nighty

Sub pause()
Dim Pausenlänge As Integer
Dim Start As Double
    Pausenlänge = 5
    Start = Timer
    Do While Timer < Start + Pausenlänge
    Loop
End Sub

Antwort 5 von nighty vom 16.12.2020, 18:58 Options

hi all

eventuell
DoEvents 

im auge behalten(zwichen do loop)

gruss nighty

Ähnliche Themen

Keine Umlaute nach Datenimport? Hilfe !!!
Rapunzel  11.12.2007 - 96 Hits - 1 Antwort

PHP Hilfe
Blaberlin  21.10.2008 - 29 Hits - 9 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026