コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

ワードが何につかうソフトなのかわからなくなってきたからハイ&ローゲームをつくってしまったよ

MSワードはプロフェッショナルな文書をつくるためのソフトらしい

これまでにもワードマクロをつくろうと思って何かやろうとしていたけど、思い返すとドキュメント一切いじってないということに気づく。そして、またドキュメントを一切いじらない何かをつくってしまった。フォームを使うとドキュメントを一切つかわない...

VBVBAも同じだろうという暴論のもとに

ちょうどこちらでVisual Basicでハイ&ローゲーム講座をしていたので、Word VBAでつくろうと思いました。
ハイ&ローゲームを作ろう | プログラミングとゲームの杜

たとえ、ワードでもこんなのできます。
f:id:andron:20160813132205p:plain
f:id:andron:20160813132210p:plain

ワードを開いてまずは「VBE」を起動。
ユーザフォームを作って、ボタン3個(Highボタン、Lowボタン、Resetボタン)、ラベル2個(数字の表示ラベル、あたり-はずれの判定の表示ラベル)を配置して、下のソースコードを書いたら完成。作ってみるとVBAVBまったく同じというわけにはいかないね。

Dim Num As Long
Sub Init()
' ランダム処理
    Dim Rand As Long
    Label1.Caption = "?"
    Label2.Caption = "5より大きいか小さいか"
    Num = (9 - 1 + 1) * Rnd + 1
' ボタンリセット
    Button1.Enabled = True
    Button2.Enabled = True
End Sub
Private Sub Button1_Click()
' Highクリックイベント
 If Num >= 5 Then
   Label2.Caption = "あたり"
 Else
   Label2.Caption = "はずれ"
 End If
 Label1.Caption = Num
 Button1.Enabled = False
 Button2.Enabled = False
End Sub
Private Sub Button2_Click()
' Lowクリックイベント
 If Num < 5 Then
   Label2.Caption = "あたり"
 Else
   Label2.Caption = "はずれ"
 End If
  Label1.Caption = Num
  Button1.Enabled = False
  Button2.Enabled = False
End Sub
Private Sub Button3_Click()
' リセットボタンクリックイベント
  Init
End Sub
Private Sub UserForm_Initialize()
' フォームが表示される前に発生するイベント
  Init
End Sub

VBAだと「()」括弧の使い方に本当に悩まされる。このソースコードでいうInitの処理に苦戦してしまった。