VBA

【プログラミングお題】VBAで世界のナベアツを書いてみた

vba nabeatu
ねぇもりさん、世界のナベアツって知ってる?
もり
もり
?!?!ごめん、知らないなぁ
1から100まで数えて「3の倍数」と「3が付く数字」の時にAho!っていうゲームだよ
もり
もり
へぇ~!まるでプログラミングのお題みたいだね!書いてみよう

世界のナベアツとは?

1~100までの数字を順番に出力して、最後に「オモロー!」と出力する

ただし、下記のいずれかの場合は「Aho」と出力する

  • 3の倍数
  • 3が付く数字

このお題で学べること

✔ For~Nextステートメントによるループ処理

✔ Mod関数…割り算の「余り」を求める

✔ Str関数…数値型を文字列型に変換する

✔ Instr関数…文字列の中に、指定の文字が存在するか検索する

1~100までの数字を順番に出力する

これはFor文を使えばいいんだよね

数値型の変数numを宣言して、1~100まで処理を繰り返します。

「3の倍数」と「3が付く数字」を判定する

3の倍数を判定する

3の倍数は、3,6,9,12・・・ですね。

【考え方】3で割り切れるかをチェックしよう
もり
もり
Mod関数を使って余りをチェックするよ

3が付く数字を判定する

これは2種類ありますね。

  • 下一桁が3の数字(3,13,23,33・・・)
  • 30番台の数値(30~39)
【考え方】数字に”3″が含まれているかチェックしよう
文字列だったら〇〇が含まれてるか?って判定できそうだけど、数字でも判定できるの?
もりさん
もりさん
そう!Str関数で数字型を文字列型に変換してから判定するよ
Str(num)で、数値型の引数numを文字列型に変換することができます
【例】13 → ”13″

つぎに、文字列に”3″が含まれているかをチェックするためにInstr関数を使用します。

Instr(文字列, 検索する文字)

 Instr(“あいうえお”, “う”) と書いた場合、“う”は3文字目に登場するので、3が戻ります。

 Instr(“あいうえお”, “か”) と書いた場合、0が戻ります。検索対象の文字列”あいうえお”に、“か”が存在しないからです。

この特徴を使用して判定します。

  • 0(ゼロ)である=検索文字列は存在しない
  • 0より大きい=検索文字列が存在する

Instr関数とstr関数を組み合わせたコードがこちら。

ここまでのまとめ

Or で結合するんだよね!

もし、「3の倍数」または「3が付く数字」の場合、Ahoと出力する
そうでなければ、数字を出力する

もり
もり
あとは、この処理をFor文の中に入れて完成だね!
最後に「オモロー!」を忘れずに

世界のナベアツコード

もり
もり
は~い、よくできました~!