<HOME  <お願い事項   <Access2002 TOP   <Access2000 TOP   <サイト内検索
 Access97 VBAの森>ゲームでも作ってみるか



(5)

で、いっしょになんか適当な文章を作って入力しましょう。

ついでに、コマンドボタンをクリックしたときじゃなくて、フォームを開いたときのイベントに切り替えると、もっとおもしろいかも。
切り替え方ってのは特にないんで、コピー&貼り付けとかそんな方法でなんとかしましょう。

Private Sub Form_Open(Cancel As Integer)
Dim Fuda As Integer
Fuda = Int((5 * Rnd) + 1)

Select Case Fuda
Case 1
Me![イメージ1].Visible = True
Me![イメージ2].Visible = False
Me![イメージ3].Visible = False
Me![イメージ4].Visible = False
Me![イメージ5].Visible = False

Me![テキスト9] = "今日もがんがん稼ぎましょう!"

Case 2
Me![イメージ1].Visible = False
Me![イメージ2].Visible = True
Me![イメージ3].Visible = False
Me![イメージ4].Visible = False
Me![イメージ5].Visible = False

Me![テキスト9] = "売上目標1700億円!まだまだ!"

Case 3
Me![イメージ1].Visible = False
Me![イメージ2].Visible = False
Me![イメージ3].Visible = True
Me![イメージ4].Visible = False
Me![イメージ5].Visible = False

Me![テキスト9] = "ちょっとお茶でもしますかね"

Case 4
Me![イメージ1].Visible = False
Me![イメージ2].Visible = False
Me![イメージ3].Visible = False
Me![イメージ4].Visible = True
Me![イメージ5].Visible = False

Me![テキスト9] = "オツカレですねぇ。元気出して!"

Case 5
Me![イメージ1].Visible = False
Me![イメージ2].Visible = False
Me![イメージ3].Visible = False
Me![イメージ4].Visible = False
Me![イメージ5].Visible = True

Me![テキスト9] = "取らぬたぬきの皮算用"

End Select
End Sub

フォームを開く度に、違うイラスト、違う文章が出てきますよね。

今日は画像が5種類しかないんでこのくらいですけど、20種類くらい入れ替えたい〜という場合は、ちょっと書くのタイヘンですよね。
そういうときは、テーブル作ってテーブルからSeekする方法、使ってみましょう。


システムのメニュー画面なんかで使うと、ちょっとおもしろいかも。

でも、あくまでも業務が主。処理が遅くなったりなんか負担がかからないよう、程々に使ってください。


余談その1.時間で表示する文字を変更するためには?

日付時刻の扱いは、とっても難しいんで、なんでもオッケーのバリアント型というタイプの変数にしてみました。
メモリをいっぱい食うんで、あまり理想的じゃないんですけど、比較とか楽なんで・・・。で、今何時か、Time関数を使って変数に代入します。

今の時刻が何時かによって、表示する文章を変えています。構造は上の花札のと同じです。
多分これで大丈夫だと思うんですけど・・・時刻の扱いは、時刻というよりもう文字列っぽい感じで比較した方がわかりやすいんじゃないかな・・・。

Private Sub Form_Open( )
Dim Nanji
Nanji = Time( )

Select Case Nanji
Case "9:00:01" To "12:00:00"
Me![テキスト9] = "おはようございまーす"
Case "12:00:01" To "17:00:00"
Me![テキスト9] = "午後はねむいのにゃん"
Case "17:00:01" To "22:00:00"
Me![テキスト9] = "残業オツカレサマなのだ"
Case "22:00:01" To "5:00:00"
Me![テキスト9] = "無理をすると身体に毒よん"
Case "5:00:01" To "9:00:00"
Me![テキスト9] = "早起きねぇ"
End Select
End Sub


余談その2.1秒ごとに絵を変える。

フォームにはタイマー時というイベントがあります。

これは、タイマー間隔というプロパティの中に指定されている秒ごとに、このプロシージャを実行するよ・・というもので、

うまく使うと絵が点滅してるように見せることができたり、ちょっとしたアニメーション効果を狙うこともできます。

タイマー間隔(TimerInterval)は、ミリ秒が単位なので、1秒は1000と入力します。

間違っても1と入力してはいけません。大変なことにな・・・ると思います。


タイマー間隔プロパティがゼロのときは、タイマーイベントは発生しませんので、とめたいときはここをゼロにするよう、処理を考えればいいですね。
例えば「ストップ」みたいなコマンドボタンを作って、クリック時のイベントでゼロを代入するとか。

下の例では、フォームを開くときのイベントで、タイマー間隔プロパティに1000を代入していますが・・。
フォームのプロパティをあらかじめ変更して、タイマー間隔欄に1000と入力しておいてもよいでしょう。

Private Sub Form_Open(Cancel As Integer)

Me.TimerInterval = 1000
End Sub

Private Sub Form_Timer( )
Dim Fuda As Integer
Fuda = Int((5 * Rnd) + 1)

Select Case Fuda
Case 1
Me![イメージ1].Visible = True
Me![イメージ2].Visible = False
Me![イメージ3].Visible = False
Me![イメージ4].Visible = False
Me![イメージ5].Visible = False
Case 2
Me![イメージ1].Visible = False
Me![イメージ2].Visible = True
Me![イメージ3].Visible = False
Me![イメージ4].Visible = False
Me![イメージ5].Visible = False
Case 3
Me![イメージ1].Visible = False
Me![イメージ2].Visible = False
Me![イメージ3].Visible = True
Me![イメージ4].Visible = False
Me![イメージ5].Visible = False
Case 4
Me![イメージ1].Visible = False
Me![イメージ2].Visible = False
Me![イメージ3].Visible = False
Me![イメージ4].Visible = True
Me![イメージ5].Visible = False
Case 5
Me![イメージ1].Visible = False
Me![イメージ2].Visible = False
Me![イメージ3].Visible = False
Me![イメージ4].Visible = False
Me![イメージ5].Visible = True
End Select

End Sub

乱数が続けて同じ数になって、おんなじものが二回続けて出てくることもありますけど、まあ、これもけっこうおもしろいでしょ。

お手持ちの、なんかおもしろい画像とかで試してみてください。
画像じゃなくても、テキストボックスに文字を代入するとか、あと、フォームの色を変えたりする操作もおもしろいです。
フォントのサイズ変えるとか。。。。


いろいろおもしろいの作ることできると思いますよ。工夫して楽しみながら、コードの書き方習得していってくださいね。
でも、あんまりむちゃはさせないように。Accessはやっぱり、データベースですからデータを扱う処理に使ってあげてください。




AccessのVBAについては、以上で終わりです。
次に、「ついで企画」なんですが、ExcelのVBAについてちょっとだけ触れてます。
興味ある方おられましたら覗いていってください。
でも、ウチのサイトはあくまでも「データベース関係」のサイトなので、ExcelのVBAのお話は、ほんとについでのオマケです。
AccessのVBAとの比較みたいなもんなので、もっと詳しく知りたい、という方はExcel専門のサイトさんを訪問してくださいね。