• ベストアンサー

▲ExcelのVBA▼困っています

何度もVBAで質問させてもらい助けてもらっています。 懲りずにまた質問ですが… 下のプログラムは"●"が跳ね返るものなのですが… ●の後を■と▲が追うようなプログラムにするには なにを追加すればいいのでしょうか…?; どなたか教えて下さい;;お願いします;; Dim time1 As Integer, time As Integer Dim X As Integer, Y As Integer Dim maru As String, yoko As String, tate As String Sub 描画() Cells(X, Y).Value = maru End Sub Sub 削除() Cells(X, Y).Value = "" End Sub Sub 待機() For time1 = 0 To 1000 For time2 = 0 To 1000 Next Next End Sub Sub 座標移動() If yoko = "右" Then Y = Y + 1 Else Y = Y - 1 End If If Y = 30 Then yoko = "左" ElseIf Y = 1 Then yoko = "右" End If If tate = "上" Then X = X + 1 Else X = X - 1 End If If X = 20 Then tate = "下" ElseIf X = 1 Then tate = "上" End If End Sub Sub main() maru = "●" X = 1 Y = 1 yoko = "右" tate = "上" Do 描画 待機 削除 待機 座標移動 Loop End Sub

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

Dim time1 As Integer, time As Integer Dim X As Integer, Y As Integer Dim X1 As Integer, Y1 As Integer Dim X2 As Integer, Y2 As Integer Dim maru As String, yoko As String, tate As String Dim sankaku As String, shikaku As String Sub 描画() Cells(Y2, X2).Value = shikaku Cells(Y1, X1).Value = sankaku Cells(Y, X).Value = maru End Sub Sub 削除() Cells(Y2, X2).Value = "" End Sub Sub 待機() For time1 = 0 To 1000 For time2 = 0 To 1000 Next Next End Sub Sub 座標移動() X2 = X1 Y2 = Y1 X1 = X Y1 = Y If yoko = "右" Then X = X + 1 Else X = X - 1 End If If X = 30 Then yoko = "左" ElseIf X = 1 Then yoko = "右" End If If tate = "上" Then Y = Y + 1 Else Y = Y - 1 End If If Y = 20 Then tate = "下" ElseIf Y = 1 Then tate = "上" End If End Sub Sub main() maru = "●" sankaku = "▲" shikaku = "■" X = 1 Y = 1 X1 = 1 Y1 = 1 X2 = 1 Y2 = 1 yoko = "右" tate = "上" Do 描画 待機 削除 待機 座標移動 Loop End Sub 通常「横方向はX、縦方向はYにする」のが普通なので、XとYを入れ替えました。

moguraaaaa
質問者

お礼

わざわざご丁寧にプログラムまで書いて頂き 本当にありがとうございます!! とても勉強になります

その他の回答 (3)

回答No.4

追記。 削除の処理では ・●があった場所は▲で上書きするので、●は消さなくても良い ・▲があった場所は■で上書きするので、▲は消さなくても良い ・■があった場所のみ消せばよい ので、■があった場所しか削除していません。

moguraaaaa
質問者

お礼

おお。そうですねそうですよね 物凄く納得しました ありがとうございます!

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

もしくは ●が移動する前に現在の■のXYを▲のXYに代入、●のXYを■のXYに代入 ●移動■移動▲移動 という感じでもいいと思います。

moguraaaaa
質問者

お礼

そんな考え方思いつきませんでした…! アドバイスありがとうございます!!

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

■と▲用のXとYを新たに追加して その座標が●の現在の座標のひとつ&ふたつ前になるようにすればいいですね。 基本的には ■X=X-1 ▲X=X-2 とかになりますよね。

moguraaaaa
質問者

お礼

な、なるほどぉ 参考になります。ありがとうございます!