[Excel/VBA]プログラミングなんて全く分からない人でも、なんとかサクッとやってしまう方法!

excel vba プログラミング 素人 初心者

 

この記事のザックリした内容1
◆対象読者

  • Excelでしょっちゅう定型作業をやってて、メンドクサイなぁと思っている人
  • プログラミングに全く興味は無いし覚える気も無いけど、ラクするためなら勉強する気持ちがある人

 

◆解決できるかも知れないお悩み

  • Excelでの定型作業で少しでもラクしたい人

 

◆どうやって解決するか

  • プログラミングの知識ゼロのままExcel VBAを使います
  • この記事では自分でプログラミングをしません
  • 少しだけカスタマイズ程度に触る程度
この記事のザックリした内容2
◆対象読者

  • VBAもプログラミングも全く分からない
  • でもちょっぴりプログラミングに興味ある
  • Excelを持っている、もしくは使える状況にある

 

◆解決できるかも知れないお悩み

  • プログラミング言語の超入門になるかも

 

◆どうやって解決するか

  • プログラミングの知識ゼロのままExcel VBAを使います
  • この記事では自分でプログラミングをしません
  • 少しだけカスタマイズ程度に触る程度
普通は1記事1テーマで、とある1人の読者さんを思い浮かべるものですが、この記事は2つの読者さんを想定しています。
すみません、欲張っちゃいました。

・・・と言っても、大した事書いてないんですけど

過大な期待はしないでね
この記事では、VBAの初歩の初歩の更に初歩の部分だけをサクッと書いているだけです。
さすがにこの記事でVBAを使えるようになるわけはありません

この記事はVBAに興味を持って戴くことを目的としています

 

 

こんにちは。ナガオカ(@boot_kt)です。

 

毎日仕事やプライベートでExcelを使っている人は多いと思います。

しかし、毎回同じ操作をしている人も多いように思います。

毎回同じ作業をしているなら、VBAでプログラミングしてラクしましょうよ!

 

できるもんならやっとるわいっ!

 

と、今あなたは思いましたね

できるんですよっ!!

あなたにプログラミングの経験なんて全く無くても、プログラミングができるんですよ!!!

そう、Excel VBAならね!

 

それを今から説明しましょう

 

 

 

今回はこっそりあなただけに秘密を暴露します!

ExcelではVBAというプログラミング言語が使えます
※最近のExcelだと、拡張子をxlsmにして保存する必要があります

 

とは言っても、VBAもプログラム言語です
やっぱり命令を覚て、命令をたくさん書いて、プログラミングする必要があるんだよね?

はい、そうです!!

 

しかしですね、プログラム命令を書くこと無く、プログラミングすることが可能なんです!!!

 

 

なんと!その秘密を今から暴露しちゃいます!

通常価格は100万円頂いているところ、

なんとっ!! 今回は特別に3万円でお教えしちゃいます!!

しかも人数限定!!

残りは僅か10人だけです!

同業者からクレームが入っていつ公開中止になるか分かりません

ぜひ今すぐお申込みください!!!

 

 

・・・などという、ありがちな煽り文句を書いてみましたが、冗談ですよ

この記事でお金なんて取りませんし、電子書類で人数限定というイミフな事もしません(笑)

 

自動記録を使えばいいんですよ!

さて、ここからが本題です

プログラミングせずに、どうやってプログラミングするのか・・・・

.
.
.
.
.
.
.

Excelの自動記録機能を使えばいいんですよ!

 

自動記録というのは・・・・みたいな説明してもいいですけど、書くのも面倒ですし、読むあなたも面倒ですよね(笑)

なので、説明はしません
以降を見てもらえれば分かります

一言だけ説明しておくと、

あなたがExcelでやる操作を、自動で記録して、VBAのソースコード(←プログラミングのこと)を生成してくれます!

 

例えば、↓以下のような表を毎回イチから作っていたとしましょう

excel vba プログラミング 素人 初心者

↑こんな表を作るには、以下のような操作をしますよね?
※細かい順番とかはどうでもいいですよ

  1. No入力
  2. 氏名入力
  3. 郵便番号入力
  4. 郵便と番号の間でAlt+Enter
  5. 住所入力
  6. 年齢入力
  7. 性別入力
  8. A1セル~F1セルまで選択
  9. 中央揃え
  10. 太字
  11. 1行目の高さ変更
  12. 各列幅調整
  13. A1セル~F12セル選択
  14. 罫線設定

こんな操作を毎回やるのって面倒ですよね

そんな操作は1回目やるときに自動記録すればいいんですよ!

※毎回毎回、表をイチから作るシチュエーションがあるとは思えないけど、ここでは「毎回やってて大変なんですぅ~」ということにしておいてね。ファイルの雛形を置いとけばいいじゃんというツッコミは無しでお願いしゃっすっ!

 

次章から自動記録の取り方を説明しますので、あなたもやってみてください。

 

自動記録の前に、開発タブがあるか確認してね

↓ここに開発タブがありますか?

excel vba プログラミング 素人 初心者 開発タブあるなら、次章へ進んでください

 

無ければ、以下の操作で表示するようにしてください

メニュー → ファイルオプションリボンのユーザー設定 → 画面右側 → 開発にチェックを入れる → OKボタン

excel vba プログラミング 素人 初心者 開発タブ

 

自動記録をやってみよう!

さて、やってみましょう!

  1. マクロの記録ボタンを押す
     
    excel vba プログラミング 素人 初心者 開発タブ

  2. マクロの記録という小さい画面が出ます
    別に何も設定する必要は無いけど、一応、

    excel vba プログラミング 素人 初心者 開発タブ
    • ショートカットキー(K):
      Shift押しながらAを押す
       
      お好きなキーでいいですよ
      今から操作を記録するんですが、今後その記録したものを呼び出すときのショートカットキーです
      別に設定しなくても記録したものを呼び出すことはできます
       
    • マクロの保存先(I):
      作業中のブックを選んでおきましょうか

    入力したらOKボタンを押してください
     

  3. 記録したい操作をします
    前々章に書いてある操作をしてください
    別に細かい順番とかは気にしないでいいです
    とりあえず似たような表を作れたらいいです

     

  4. 操作が終わったら、記録終了ボタンをクリック
     
    excel vba プログラミング 素人 初心者 開発タブ

自動記録自体はこれで終わりです

 

んんんっ!!!

全くプログラミングらしきものが出てきてないぞ!!!

 

まぁまぁ、次章をご覧ください

 

自動記録で作成されたプログラムを見てみよう!

AltF11を押してください

こんな感じの画面が出てきましたか?

excel vba プログラミング 素人 初心者 開発タブ

念のために、左のツリーから、

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

今後はこれをそのまま使う事ができます

自動記録を開始するときに
CtrlShiftA
を設定したと思いますので、

このブックを開いて、CtrlShiftAを押せばいつでもこのプログラムが実行されます

ショートカットキーを設定していない場合にマクロを動かす方法
メニュー → 開発タブ → マクロ(左から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のプログラミング のレッスンに興味がある方、レッスン内容を聞いてみたい方、なんなりとお問い合わせください。
無料体験レッスンもありますのでお気軽にどうぞ!!!

 

 

excel vba プログラミング 素人 初心者

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

Windows/Mac/Linuxを使う現役システムエンジニア&プログラマ。オープン系・組み込み系・制御系・Webシステム系と幅広い案件に携わる。C言語やC#やJava等数多くのコンパイラ言語を経験したが、少し飽きてきたので、最近はRubyやPython、WordPressなどのWeb系を修得中。初心者向けのプログラミング教室も運営中。オンライン・対面・出張等でプログラミングをレッスンします。