- Excelでしょっちゅう定型作業をやってて、メンドクサイなぁと思っている人
- プログラミングに全く興味は無いし覚える気も無いけど、ラクするためなら勉強する気持ちがある人
◆解決できるかも知れないお悩み
- Excelでの定型作業で少しでもラクしたい人
◆どうやって解決するか
- プログラミングの知識ゼロのままExcel VBAを使います
- この記事では自分でプログラミングをしません
- 少しだけカスタマイズ程度に触る程度
- VBAもプログラミングも全く分からない
- でもちょっぴりプログラミングに興味ある
- Excelを持っている、もしくは使える状況にある
◆解決できるかも知れないお悩み
- プログラミング言語の超入門になるかも
◆どうやって解決するか
- プログラミングの知識ゼロのままExcel VBAを使います
- この記事では自分でプログラミングをしません
- 少しだけカスタマイズ程度に触る程度
すみません、欲張っちゃいました。
・・・と言っても、大した事書いてないんですけど
この記事では、VBAの初歩の初歩の更に初歩の部分だけをサクッと書いているだけです。
さすがにこの記事でVBAを使えるようになるわけはありません
この記事はVBAに興味を持って戴くことを目的としています
毎日仕事やプライベートでExcelを使っている人は多いと思います。
しかし、毎回同じ操作をしている人も多いように思います。
毎回同じ作業をしているなら、VBAでプログラミングしてラクしましょうよ!
できるもんならやっとるわいっ!
と、今あなたは思いましたね
できるんですよっ!!
あなたにプログラミングの経験なんて全く無くても、プログラミングができるんですよ!!!
そう、Excel VBAならね!
それを今から説明しましょう
Contents
今回はこっそりあなただけに秘密を暴露します!
ExcelではVBAというプログラミング言語が使えます
※最近のExcelだと、拡張子をxlsmにして保存する必要があります
とは言っても、VBAもプログラム言語です
やっぱり命令を覚て、命令をたくさん書いて、プログラミングする必要があるんだよね?
はい、そうです!!
しかしですね、プログラム命令を書くこと無く、プログラミングすることが可能なんです!!!
通常価格は100万円頂いているところ、
なんとっ!! 今回は特別に3万円でお教えしちゃいます!!
しかも人数限定!!
残りは僅か10人だけです!
同業者からクレームが入っていつ公開中止になるか分かりません
ぜひ今すぐお申込みください!!!
・・・などという、ありがちな煽り文句を書いてみましたが、冗談ですよ
この記事でお金なんて取りませんし、電子書類で人数限定というイミフな事もしません(笑)
自動記録を使えばいいんですよ!
さて、ここからが本題です
プログラミングせずに、どうやってプログラミングするのか・・・・
.
.
.
.
.
.
.
Excelの自動記録機能を使えばいいんですよ!
なので、説明はしません
以降を見てもらえれば分かります
一言だけ説明しておくと、
あなたがExcelでやる操作を、自動で記録して、VBAのソースコード(←プログラミングのこと)を生成してくれます!
例えば、↓以下のような表を毎回イチから作っていたとしましょう
↑こんな表を作るには、以下のような操作をしますよね?
※細かい順番とかはどうでもいいですよ
- No入力
- 氏名入力
- 郵便番号入力
- 郵便と番号の間でAlt+Enter
- 住所入力
- 年齢入力
- 性別入力
- A1セル~F1セルまで選択
- 中央揃え
- 太字
- 1行目の高さ変更
- 各列幅調整
- A1セル~F12セル選択
- 罫線設定
こんな操作を毎回やるのって面倒ですよね
そんな操作は1回目やるときに自動記録すればいいんですよ!
※毎回毎回、表をイチから作るシチュエーションがあるとは思えないけど、ここでは「毎回やってて大変なんですぅ~」ということにしておいてね。ファイルの雛形を置いとけばいいじゃんというツッコミは無しでお願いしゃっすっ!
次章から自動記録の取り方を説明しますので、あなたもやってみてください。
自動記録の前に、開発タブがあるか確認してね
↓ここに開発タブがありますか?
無ければ、以下の操作で表示するようにしてください
メニュー → ファイル
→ オプション
→ リボンのユーザー設定
→ 画面右側 → 開発
にチェックを入れる → OKボタン
自動記録をやってみよう!
さて、やってみましょう!
マクロの記録
ボタンを押す
- マクロの記録という小さい画面が出ます
別に何も設定する必要は無いけど、一応、- ショートカットキー(K):
Shift押しながらAを押す
お好きなキーでいいですよ
今から操作を記録するんですが、今後その記録したものを呼び出すときのショートカットキーです
別に設定しなくても記録したものを呼び出すことはできます
- マクロの保存先(I):
作業中のブックを選んでおきましょうか
入力したらOKボタンを押してください
- ショートカットキー(K):
- 記録したい操作をします
前々章に書いてある操作をしてください
別に細かい順番とかは気にしないでいいです
とりあえず似たような表を作れたらいいです - 操作が終わったら、記録終了ボタンをクリック
自動記録自体はこれで終わりです
んんんっ!!!
全くプログラミングらしきものが出てきてないぞ!!!
まぁまぁ、次章をご覧ください
自動記録で作成されたプログラムを見てみよう!
Alt+F11を押してください
こんな感じの画面が出てきましたか?
念のために、左のツリーから、
VBAProject (Book1)
→ 標準モジュール
→ Module1
をダブルクリック
こんな長いプログラムが書かれているはずです
※操作の量とか操作手順とかにもよるので、全く同一ではないと思いますが、プログラムが書かれているならOKです
これが自動記録機能を使って自動生成されたVBAのプログラムコードです
そうです!
あなたがプログラミングしたも同然です
いや、あなたがプログラミングしたのです!!
そうです、あなたが作ったのです!
別に中身を理解する必要はありませんので、サラッと見てください
日本語の文字とか英単語とか、知ってる単語だけを眺める程度でいいです
知ってる英単語と日本語を眺める程度はしてください
知ってる英単語と日本語を眺めていたら、なんとなぁ~~~~~~~く動きがイメージできるかも知れません
もしも動きをイメージできたら・・・・、あなたはプログラミングの能力があります!!!
Option Explicit Sub Macro1() ' ' Macro1 Macro ' ' Keyboard Shortcut: Ctrl+Shift+A ' ActiveCell.FormulaR1C1 = "No" Range("B1").Select ActiveCell.FormulaR1C1 = "氏名" ActiveCell.Characters(1, 2).PhoneticCharacters = "シメイ" Range("C1").Select ActiveCell.FormulaR1C1 = "郵便番号" ActiveCell.Characters(1, 4).PhoneticCharacters = "ユウビンバンゴウ" Range("D1").Select ActiveCell.FormulaR1C1 = "住所" ActiveCell.Characters(1, 2).PhoneticCharacters = "ジュウショ" Range("E1").Select ActiveCell.FormulaR1C1 = "年齢" ActiveCell.Characters(1, 2).PhoneticCharacters = "ネンレイ" Range("F1").Select Selection.FormulaR1C1 = "性別" Selection.Characters(1, 2).PhoneticCharacters = "セイベツ" Range(Selection, Selection.End(xlToLeft)).Select Selection.Font.Bold = True With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Rows("1:1").RowHeight = 63 With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent1 .TintAndShade = 0.599993896298105 .PatternTintAndShade = 0 End With Range("A1:F12").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With Columns("A:F").Select Columns("A:F").EntireColumn.AutoFit Range("C1").Select Columns("C:C").ColumnWidth = 10.38 Range("C1").Select ActiveCell.FormulaR1C1 = "郵便" & Chr(10) & "番号" ActiveCell.Characters(1, 2).PhoneticCharacters = "ユウビン" ActiveCell.Characters(4, 2).PhoneticCharacters = "バンゴウ" Range("C2").Select Columns("C:C").EntireColumn.AutoFit Columns("D:D").ColumnWidth = 34.13 Columns("B:B").ColumnWidth = 23.13 Range("A1").Select End Sub
今後はこれをそのまま使う事ができます
自動記録を開始するときに
Ctrl+Shift+A
を設定したと思いますので、
このブックを開いて、Ctrl+Shift+Aを押せばいつでもこのプログラムが実行されます
メニュー →
開発
タブ → マクロ
(左から2番目)をクリックすれば、マクロ選択画面が出ます
ちょっとだけ、ほんのちょっとだけ解説します
Range
Rangeという命令が結構出ていると思いませんか?
それはセルの番地を示しています
日本語の文字
氏名とか住所とかという文字列がありますね
これは何かお分かりですよね?
そうです、あなたが自動記録の際に入力した文字です
英単語
こういう命令ありますかね?
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
意味は分からなくていいです、しかし、HorizontalもAlignmentもただ英語です
よく読めば想像できそうに思いませんか?
xlはExcelの命令を示しているだけで、特に意味はありません
他にもxlの付いた命令が何個かありますが、xlは無視してください
xlCenterのように、xlを除いたCenterならどの操作のことを示しているか分かりませんか?
また、CenterがあるのならRightやLeftがあるはず!と想像してみてください
ちょっとだけ、ほんのちょっとだけ改造しよう
これをそのまま使ってもいいですし、ちょっとだけ改造することも可能です
分かる部分だけ書き換えるだけならプログラミングの知識は完全に不要です
たとえば、
- Noを番号に書き換えてみよう!
- 氏名を名前に書き換えてみよう!
- 氏名の列を半分にしてみよう
分かるかな!?
※答えは書かないので考えてみてね
- Noを番号に書き換える
※これはそのまんまなので、ヒント無し - 氏名を名前に書き換える
※これはそのまんまなので、ヒント無し - 氏名の列幅のサイズを半分にしてみよう
幅を英語言うとWidth、列を英語で言うとColumn、サイズは当然数字で表しますよね
で、書き換えたら、実行してみよう!
どうですか?
思ったように動きましたか?
よく分からないとおっしゃる場合、レッスンを受けてみませんか?
プログラミングをやってみたいけど、何からやれば良いのか分からない方へ
漠然と「プログラミングをやってみたい!」と思っているなら、
Excel VBAプログラミングをやってみてはいかがですか?
Excel VBAはExcelに特化しているものの、プログラミングの基本はちゃんと学べます
それに、動かして結果がすぐ分かるし、仕事にも役に立つしで、(特にやりたい言語が分からないのであれば)プログラミングの入門としては一番のオススメです!
※Excelを持ってないといけませんけど
Excel VBA慣れれば、VB.netも割りとスムーズに学習できます
プログラミングの基本(変数、IF、FOR、四則演算、代入等)に慣れれば、VB.netじゃなくても別の言語を理解しやすくなります
プログラミングやってみた~~~ぃ~~~~
でも何から手を付ければ良いのか分からないぃ~~~~~
と悩んでるくらいならExcel VBAでプログラミング学習を開始してみませんか?
さいごに、
プログラミングの知識なんてなくても、ExcelならVBAを自動生成してプログラミングすることができます
自分のした操作を思い出しながらVBAの命令(要は英単語じゃん)を読んでいけば、命令が何を表しているか分かります
いや、分からなくてもいいです
自分のした操作を思い出しながら英単語を眺めるだけでいいです
慣れてくれば、自動記録を何回かやって、それぞれに生成されたプログラムをつなぎ合わせたり、必要なところだけを取って、一つのプログラムを作ることも可能です
※私がまだプログラミングなんてそんなに知らなかった頃、自動生成しまくって、それらをつなぎ合わせたり削ったりして、自分独自のVBAプログラムを作ってましたよ
プログラム言語と言っても所詮は英単語なんですよ
しかもVBAはExcel上で動くこと前提ですから、VBA命令はExcelでの動き書いていると言ってもいいです。
ですので、動きを想像しやすいです
普通、プログラミングの何が分からないかと言うと、文字で書いた命令と、実際の動きのイメージがつながらないことだと思います
VBAではこれが分かりやすいので、VBAは習得し易い言語と言えます
Excel VBAのプログラミング のレッスンに興味がある方、レッスン内容を聞いてみたい方、なんなりとお問い合わせください。
無料体験レッスンもありますのでお気軽にどうぞ!!!