VBAの練習3

使用するデータは A-002 です。

課 題

内容は「VBAの練習2」とほぼ同じですですが別の意図がありますので最後までお読み下さい。

1~320番台のスタート回転数(1分間スタート)をP列に表示させて下さい。
ただし、スタートの表示はパチンコのみでスロットは空白のままにして下さい。
(少数点の設定は、セルに設定していますので今回は考えなくて大丈夫です)
ベース中アウト がゼロの場合はセルは空白にして下さい。
一覧のPS区分の情報を基に台番号のセルをパチンコは赤く塗りつぶし
スロットは青く塗りつぶして下さい。

ヒント
「For~Nextステートメント」を使用します。

セルの塗りつぶしは次のようにします。
Cells(1,1).Interior.ColorIndex = 3  赤色
Cells(1,1).Interior.ColorIndex = 5  青色

パチンコ・スロットの判断は「Ifステートメント」を使用します。

スタート(1分) = ベース中スタート ÷ ベース中アウト × 100
 

解 答

解 説

練習2のマクロを実行してみましょう。

するとエラーが発生します。

これは、L列の「ベース中スタート」がゼロのためエラーが発生したのです。

Excelの数式でもゼロで割ったときには「#DIV/0!」が表示されます。

Excelのセルの数式でもVBAでもゼロで割るとエラーが発生します。

そこでスタート回転数を算出する前に「条件分岐」を使って
  If Cells(i, “J”).Value <> 0 Then
としています。
ベース中アウトがゼロではない場合処理を行う とします。

実際のデータではゼロではなく空白になっていたりする場合もあります。
その時は、 If Cells(i, “J”).Value <> “” Then となります。

作成したコードを実行して割り算の計算式の個所で「オーバーフローしました」とエラーが出た場合は、割り算の分母がゼロと思って問題ないです。

パチンコ店では、部品交換で警察検査が済むまで稼働停止にしたり、実際に稼働がゼロの遊技台、遊技玉やコインをその台で買って別の台で遊技を行ったり(売上1000円,アウト ゼロ)などイレギュラーな事が発生します。
計数データを求める場合の割り算の時には、分母の値がゼロの場合を想定してコードを書くように心掛けましょう。