Move Shape видимый - PullRequest
       4

Move Shape видимый

0 голосов
/ 25 апреля 2018

Я пытаюсь переместить группу изображений в Excel с помощью VBA, это прекрасно работает, но я хочу, чтобы пользователь мог видеть, как движется изображение.

Это для маленькой игры, "Скачки".

Вот мой код для перемещения лошадей.

Sub TrackProgress()
Dim Tracks() As GroupObject
Dim Agents(), HorseCount As Integer
Dim AgentCount As Integer
Dim TrackCount As Integer
Dim Progress As Double
Dim MaxPx As Double

AgentCount = Sheets("Config").Range("O5").Value
TrackCount = Round(AgentCount / HorsesPerTrack, 0)
ReDim Tracks(1 To TrackCount)
ReDim Agents(1 To AgentCount)
MaxPx = Sheets("Config").Range("O15").Value


Sheets("HorseRaceTrack").Select

For i = 6 To Sheets("Config").Cells(Rows.Count, 5).End(xlUp).Row

    If Sheets("Config").Cells(i, 4).Value = "Active" Then
        Agents(i - 5) = Sheets("Config").Cells(i, 5).Value
    End If

Next i

For i = 1 To AgentCount

    If Not IsError(Sheets("Config").Cells(i + 5, 7).Value) Then
        Progress = Sheets("Config").Cells(i + 5, 7).Value
        Do Until Sheets("HorseRaceTrack").Shapes("Horse_" & Agents(i)).Left >= (MaxPx * Progress)
            Sheets("HorseRaceTrack").Shapes("Horse_" & Agents(i)).IncrementLeft 1.3636220472
            'Sleep 1000 ' Pferd beweg sich nicht flüssig....
        Loop
    Else
        GoTo NextOne
    End If

NextOne:
Next i

End Sub

Я уже пытался использовать "сон 500", но экран также зависает

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 25 апреля 2018

Поставьте DoEvents сразу после .IncrementLeft. Это должно позволить рабочему листу отображать форму при ее перемещении.

Регулируя размер приращения, вы можете ускорить или замедлить движение.

...