Hallo Ecks,
nachfolgend mal drei Makros, mit denen ein Rechteck, dass den Namen "Rechteck 1" hat, von links nach Rechts im zeitlichen Abstand von 500 Millisekunden umd 25 Pixel nach rechts verschiebt. Mit dem Makro "Bewegen_start" startest Du die Bewegung. In diesem Beispiel wird auch die Füllfarbe des Rechtecks je nach Position von grün über gelb in rot verändert. Das kann aber auch aus dem Makro gelöscht werden. Wo, habe ich im Makro beschrieben.
Bei Bedarf kann über das Mako "Bewegen_stopp" das Rechteck auch gestoppt werden.
Kopiere die Makros in ein StandardModul und starte sie z.B. über eine Befehlsschaltfläche.
[b]Option Explicit
Public Declare Sub Sleep Lib "kernel32" (ByVal dwmilliseconds As Long)
Public iBewegung As Integer
Public Stopp As Boolean
Sub Bewegen_stopp()
Stopp = True
End Sub
Sub Bewegen_start()
Stopp = False
'Variable "iBewegung" auf den Wert 0 setzen
iBewegung = 0
'Das Rechteck mit dem Namen "Rechteck 1"...
With ActiveSheet.Shapes("Rechteck 1")
'...in die Anfangsposition verschieben
.Left = 1
'...Rechteck mit der Farbe grün füllen
.Fill.ForeColor.SchemeColor = 17
End With
'Makro für 500 Millisekunden anhalten
Call Sleep(500)
'Das Makro "Bewegen" starten
Bewegen
End Sub
Sub Bewegen()
If Stopp = True Then Exit Sub
'Bewegt das Rechteck mit dem Namen "Rechteck 1" um 25 Pixel nach rechts
ActiveSheet.Shapes("Rechteck 1").IncrementLeft 25
'Übergibt die Steuerung wieder an das Betriebssystem
DoEvents
'Makro für 500 Millisekunden anhalten, hierrüber wird _
das eigentliche Bewegen realisiert, da das Makro alle _
500 mSek neu gestartet wird. Das Ganze solange, bis die _
Variable "iBewegung" einen bestimmten Wert enthält
Call Sleep(500)
'Die Variable "iBewegung" um den Wert 1 erhöhen
iBewegung = iBewegung + 1
'Wenn die Variable "iBewegung" gleich dem Wert 5, _
dann Rechteck mit dem Namen "Rechteck 1" mit der Farbe gelb füllen _
Befehlszeile, kann wenn kein Farbumschlag gewünscht, gelöscht werden
If iBewegung >= 5 Then _
ActiveSheet.Shapes("Rechteck 1").Fill.ForeColor.SchemeColor = 5
'Wenn die Variable "iBewegung" gleich dem Wert 15, _
dann Rechteck mit dem Namen "Rechteck 1" mit der Farbe rot füllen _
Befehlszeile, kann wenn kein Farbumschlag gewünscht, gelöscht werden
If iBewegung >= 15 Then _
ActiveSheet.Shapes("Rechteck 1").Fill.ForeColor.SchemeColor = 10
'Wenn die Variable "iBewegung" gleich dem Wert 20, _
dann das Makro beenden, da Endpunkt erreicht. Der Wert 20 _
bedeutet, dass das Rechteck 20 Schritte macht. Wert _
entsprechend anpassen
If iBewegung >= 20 Then
Application.CutCopyMode = False
Exit Sub
End If
Bewegen
End Sub
[/b]
Ich habe Dir dazu auch mal eine Beispieldatei erstellt, die Du Dir unter
http://www.excelbeispiele.de/Beispiele_Supportnet/Beispiel... herunter laden kannst. Ich hoffe, Du kommst klar.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf
meiner HP in der
Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
Bei Fragen melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.