広告
お仕事などでお馴染みの表計算ソフト、エクセルに付属しているExcelVBA(エクセルブイビーエー)というプログラミング言語を使って初心者・入門者向けにプログラミングのキホンを解説していきます!
ExcelVBAができるようになれば業務内容によってはボタン一つで大幅な業務効率化ができる他に、普段のエクセルの使い方も段違いにレベルアップする事ができます!
ベテランの方も新人さんも興味のある方はぜひ挑戦してみてください!
プログラムの基本は
(1)上から順番に
(2)条件で分かれ道
(3)繰り返し
この3つでできております。
まずは「(1)上から順番」に実行されるプログラムを書いてみましょう!
サンプルプログラムのマネをしながら
半角で大文字・小文字を間違えないように
書いていきましょう!
もう少し細かく説明すると
〇半角、英数、大文字、小文字・・・ABCDE~VWXYZ abcde~vwxyz 0123456789
全角大文字・小文字・・・ABCDE~VWXYZ abcde~vwxyz 0123456789
小さな空白はスペースキー
大きな空白はTABキー
新しい行への改行(次の行へいくこと)はEnterキー
全角スペースはダメ!エラーになります!
前はプログラム編集画面から直接「f5」キーで実行しましたがせっかくなのでエクセル画面から実行できるように実行ボタンを設置してみたいと思います。
「2日目 最初の設定と実行、エラーの消し方」で作ったファイルを開いて「開発」タブから上部メニューの「挿入」というトコロを選択してください。
下に展開されたメニューの一番左上がボタンになるので選択します。
カーソルが細い十字へと変わりボタン作成待ちになるのでボタンを設置したい場所でクリックします。
「マクロの登録」画面が表示されますので、一番上の「test」というのを選択してOKしてください。(この「test」が前回作ったプログラムになります。プログラム上で「test」の部分を他の名前に変更すればそのプログラム名が表示されます!)
ボタンができました!
作った瞬間はボタンの大きさなどを変更できる編集状態になるので、どこか他の場所の適当なセルを選択して編集状態を解除してください。(後からでもボタン上で右クリックでボタンのサイズ、設置場所など変更できます!)
それではボタンを押してみましょう!
前回と同じく「hello world!!!」と表示されれば成功です!
※次回からプログラムの編集をしたい時はボタン上を右クリック→マクロの登録→プログラムを選択→右側の編集をクリック、という手順からもプログラムを編集できるようになります!
'3日目 プログラム1 Sub test() MsgBox "hello world!!!" End Sub
hello world!!!
とでれば成功です!
作文の題名を書くときに頭に3マス空けて書くようにExcelVBAにも決まったカタチがあります!
Sub test() 'ここにプログラムを書いていきます。 End Sub
これが決まったカタチになります。今からコメントのトコロにプログラムを書いていきます。難しく考えずにそのまま覚えちゃいましょう!
「test」の部分がプログラム名になりますのでここは自分の好きな名前をつけて大丈夫です。
次の画像のような空白部分をインデント(字下げ)と言います。
これはプログラムを読みやすくする為のもので一般的にタブキーを使ってインデントを行います。
ぶっちゃけ別にいれなくても良いのですが、読みにくいプログラムはエラーを引き起こす原因になったりもするのでスナオに書いてある通りにプログラミングしましょう!
MsgBox "hello world!!!"
この命令を「MsgBox」命令っていいます!文字や数字をウィンドウのカタチで画面に出す命令です。「"」チョンチョンの中に画面に出したい文字や数字を入れます!
命令の事を正しくは関数(かんすう)って言ったりします!
「関数」という言葉だと関数をまだ習っていない方はわかりづらいと思いますので自作関数を作るまではしばらく「命令」という言葉を使って説明したいと思います。
※通常のエクセル関数とは別のものになります!
MsgBox "こんにちは!"
表示するメッセージの部分はひらがなでも大丈夫です。
プログラムの途中でコメントなどを入れたい時は「'」この点の後に入れます!改行はできないので一行で入れます!メモ書きみたいな部分ですね。
プログラムでよく使う記号などの名前です。
「"」・・・ダブルクウォーテーション
「'」・・・シングルクウォーテーション
「:」・・・コロン
「;」・・・セミコロン
「*」・・・アスタリスク
「/」・・・スラッシュ
「>」・・・大なり
「<」・・・小なり
「&」・・・アンパサンド
なんとなーく覚えてれば大丈夫です!
なれないウチは大変ですが「"」チョンチョンなどの細かな記号を書き忘れただけでエラーになるので、ゆっくり落ち着いてプログラミングしてください!
広告
最初はエクセル画面に結果を表示する命令をいくつか学びましょう。
'3日目 プログラム2 Sub test() Worksheets("Sheet1").Range("B2").Value = "おはよう!" End Sub
エクセル画面に直接結果を表示する「Range」命令です。
Worksheets("シートの名前").Range("セルの位置").Value = "メッセージ"
みたいに使います。
セルの位置を直接的に指定できるのでわかりやすいと思います。
続けてもう一つ紹介します。
'3日目 プログラム3 Sub test() Worksheets("Sheet1").Cells(5,1).Value = "こんばんは!" End Sub
同じくエクセル画面に直接結果を表示する「Cells」命令です。
Worksheets("シートの名前").Cells(行の位置,列の位置).Value = "メッセージ"
のように使います。
セル(A1)→Cells(1,1)
セル(B1)→Cells(1,2)
みたいになります。
「Cells」命令の場合はセルの場所を数値で指定するので最初はわかりづらいかもしれません。
今後はこれらの命令を必要に応じて使い分けて結果を表示していきたいと思います。
「ExcelVBA」を使ってセルの内容を変更した時は「一つ戻る」の操作はできないのでご注意ください!
「_」アンダーバーを使ってプログラムを折り返す事ができます。
'3日目 プログラム4 Sub test() Worksheets("Sheet1").Range("C2") _ .Value = "グッドモーニング!" End Sub
「_」アンダーバーを使えばプログラムを途中で折り返す事ができます。
プログラムが横に伸びてしまって見づらい時など必要に応じて使ってください。
キリのいいトコロでしか折り返せないので注意です。
ちなみにワークシート「sheet1」しか使ってません!という前提なら最初の長ったらしい「Worksheets("Sheet1")」を省略して
Sub test() Range("B2").Value = "おはよう!" End Sub
だけでも問題なく実行されます。
ただ複数のシートを使っている状態で「Worksheets("Sheet1")」の部分を省略してしまうとエクセルの側ではどのシートに対してプログラムを実行すれば良いか判断できないのでエラーを引き起こす原因になったりします。
そうならないように複数のシートを使う場合は省略しないで書くか
Worksheets("Sheet2").Activate
「今からこのシートを使うぜっ!」みたいな意味になるこちらの「Activate(アクティベート)」命令を先に書いてから省略してください。
個人的には慣れるまではムダなエラーを避ける為、省略せずにすべて打ち込むのをオススメします。
'3日目 プログラム5 Sub test() MsgBox "入力時の注意" MsgBox "①名前・生年月日・性別の順に入力してください" MsgBox "②苗字と名前の間に全角スペースを入れてください" MsgBox "③生年月日は「s50/03/26」のように入れてください" MsgBox "以上です" End Sub
「MsgBox」命令を組み合わせれば注意書きのようなものが設置できます!
ボタンの大きさ、ボタンの題名などはボタン上で右クリックで変更できるのでいろいろ試してみてください。
例えばこんな表があったとして、
必要な項目を一気に消せるクリアボタンを作ります。
'3日目 プログラム6 Sub test() Worksheets("Sheet1").Range("B3").Value = "" Worksheets("Sheet1").Range("B4").Value = "" Worksheets("Sheet1").Range("B5").Value = "" Worksheets("Sheet1").Range("B6").Value = "" End Sub
ボタンを押すと・・・、
数量欄がクリアされました!!!
メッセージの部分を「""」のように空にする事でそこのセルの値を消去できます。
これを使えば表を再利用する時にいちいちドラッグして消す事もなくなりますね。
今の時点では長ったらしいムダの多いプログラムになりますが、この後学ぶプログラミング技術によってとても簡単に書けるようになるのでご安心ください。
それでは今まで学んだプログラムを別々のボタンに登録してボタンも2つ設置してみます。
'3日目 プログラム7 Sub tukaikata() MsgBox "入力時の注意" MsgBox "①クリアボタンで前の内容を消去" MsgBox "②報告書の数量を打ち込んでください" MsgBox "以上です" End Sub Sub clear_button() Worksheets("Sheet1").Range("B3").Value = "" Worksheets("Sheet1").Range("B4").Value = "" Worksheets("Sheet1").Range("B5").Value = "" Worksheets("Sheet1").Range("B6").Value = "" End Sub
「Sub 名前 ~ End Sub」のカタマリで区切って別々のプログラムを登録する事ができます。
ボタンにプログラムを登録する時に
マクロの登録画面でプログラムの名前がそれぞれ表示されるのでボタンに合わせて登録すればボタンごとに実行されるプログラムを分ける事ができます。
まだまだできる事は少ないですが常にアイデアを膨らませてプログラミングを楽しんでしまいましょう!
広告
Copyright 2016 K.N/petitetech.com