【縦動画】Excelで初めてのプログラミングをしてみよう【VBA】
ฝัง
- เผยแพร่เมื่อ 25 ม.ค. 2025
- 今回はエクセルでプログラミングを体験して頂く動画だ,言語はVBAを使う
こんな感じのクイズプログラムを組むぞ
一つ一つ解説するから聞いていってね!
Excelで開発タブを表示しよう
プログラムを組むには開発タブを有効化しなければならない
ファイルから左下にあるオプションを選んで
リボンのユーザー設定から,右にあるメインタブの所から開発にチェックを入れてOKボタンを押す
有効化できたら開発タブが表示できる
クエスチョンズシートと問題のシートの2つを用意している
クエスチョンズシートには問題と答えのデータを自分で作ってね
まずは「問題シート」に出題ボタンと答えのボタンを作成する
ボタンは図形から作成できるので、図形を使っていい感じのボタンをデザインしてな
さて、プログラミングの環境を設定しよう
開発タブからVisual Basicをクリックする
動画のようにメニューを右クリックから、挿入で標準モジュールを選択する
このモジュールページがプログラムを書く場所だ
サブと書いて任意のプログラム名を決める、ここは出題の意味のトイという名前にした
試しに問題のシートに「テスト」という文字を出力してみる
シート名にレンジと書いて、セルを指定する、ここではA1に出力したいのでA1とした
xlms形式で保存して実行してみよう
プログラムのウィンドウは簡単に開けるので、自由に閉じて良いぞ
ボタンにプログラムを紐づける為に右クリックで、マクロの登録を押して、トイのプログラムを選択する
設定後に適当なセルをクリックすると、ボタンになるので押す、A1にテストと表示される事を確認してくれ
先ほどはレンジを使ったが、セルというものも使えるのでこちらもレクチャーしよう
セルは行と列の番号で指定する、1と2と指定すると1行目の2列目という意味で、B1の事だ
出題ボタンを押すとB1の所にテキストが出力されたな
今度はクエスチョンズシートのセルを問題シートに出力してみよう
ここではクエスチョンズシートのA1のセルを取得して、問題シートで表示する方法を紹介する
クエスチョンズシートのレンジでA1を取得した後に、AAAと表示する上のコードのAAAを消して、クエスチョンズシートのA1のデータを表示するようにした
ボタンを押すと問が出題されたな
さて、出題される問題はランダムである必要がある、VBAにはランダムという機能がある
とりあえずコードを書くが、後で詳しく解説する
Sub TangoRead()
r = Int(30 * Rnd + 1)
ランドはランダムな小数になり、イントは整数にする機能だ
20は問題の数で、アスタリスクは掛け算
例えばランドが0.874なら、それに20を掛けて17.121となる、それをイントで整数にして17となる
ランドが0.37となったら、それに20を掛けると7になる
ちゃんとランダムに数字を取得できているか、試しにA1のセルに出力してみよう
ボタンを連打するとランダムの数字を取得できているが、0が時々出ている、0番目のセルは存在しないので対応が必要だ
対応は簡単で結果に1を足すだけ、これをする事により1と20の数字を出す事もできる
1から20のランダムな数字が出せるようになったので、クエスチョンズシートのセルの指定で、行の所にランダムのrを指定する
出題のコードができたので、切り取りをして、下のコードのB1のセルに出力するようにした
コピーしたコードを貼り付けして実行してみよう
ちょっと手違いで、B1のセルより文字サイズを調整しているB2のセルに出題するようにした
ランダム出題できている事が確認できるだろうか
今度は答えも出力するようにする、出題に使っているランダムのrを使えば、同じ行の答えのセルも抽出する事は分かるだろう
問題と答えを同時に出す事ができた、しかし、答えが見えてしまっては意味がない
結論から話すと答えの文字色を白にして、セルのテキストを見えなくする、そして答えボタンを押すと白い文字を黒に戻すと、あたかも表示と非表示を切り替える事ができるのだ
文字色を変えるにはフォントカラーインデックスというのを指定する、1が黒で、2が白となる
答えはセルの中にあるが、白色なので見えない、これぞ逆転の発想!
最後に答えボタンを押すと白の文字を黒に戻すプログラムを組む、サブで新しいプログラムを作ろう
黒色はカラーインデックス1番だったな
最初に設定したボタンと同じように、答えボタンもマクロの登録で追加したプログラムを指定して完了だ
一問一答のプログラムはこんな感じで組めるな、ここまで付いてきてくれた方、お疲れ様
頑張れば僕の固定動画のようなプログラムも組めるようになるかもしれない
ご視聴ありがとうございました!