2016.03.20 Sunday

入門!入門!エクセルVBA!【3】

[スポンサードリンク]

0
    JUGEMテーマ:仕事のこと
    2016.03.19 Saturday

    入門!入門!エクセルVBA!【2】

    [スポンサードリンク]

    0
      JUGEMテーマ:仕事のこと

      VBEにVBAを書く準備が出来た状態

      こんにちは!プログラムなんて一行も書いたことない方のためのExcelVBA入門記事、連載の2回目です!

      尚、第1回の連載はこちらからご覧になれます。

      さて前回は特に意味も説明せずに、いきなりVBAのソースコードを写し取っていただきましたね。

      ところで、繰り返しになり恐縮ですが、プログラミングの学習はスポーツや絵画の習得に似ています。
      「なんのこっちゃ?」とプログラム内容の意味がさっぱり分からなくても、
      手を動かしてサンプルコードを写し取ること。
      そして実際に自身のPCで動かしてみる体験をすること。
      そういった学習方法がとても大切なんです。

      従って、とりあえずサンプルコードを写し取って、自分のPCで動かしますね。
      その次にコードの1行1行の意味を理解していく。
      そういう手順で勉強すると効率的です。



      さて!今回は前回の簡単な復習と、前回写して頂いたコードの解説からはじめたいと思います。
       

      前回の簡単な復習

      まず用語解説から復習しましょう!

      マクロとは:プログラムのことです

      VBAとは:プログラミング言語の一種、ヴィジュアルベーシックforアプリケーションの略称。

      VBEとは:VBAを実際に書いたり編集したりする画面のこと。ヴィジュアルベーシックエディターの略称。

      従って「エクセルVBAを組む」とは、エクセルを自動で動かすためのプログラムをVBAという言語を用いて、
      VBEという編集ソフトで作成することを言います。

      で、

      用語についてはなんとなくの理解でOKです。そのうち慣れます。
      VBAはとっつきにくい印象こそありますが実はとっても簡単で便利なものなので安心していいんですよ!

      で、エクセルの普通の画面からVBEを起動してVBAのプログラムを編集する手順を前回やったわけですが、
      覚えていらっしゃいますでしょうか。

      忘れてしまった方もいるかもしれないので今回も画面の写真を掲載しつつ丁寧に説明していきますね!

      ではまずエクセルの起動をお願いします。

      下記のような画面になりましたでしょうか?

      エクセル2007VBA入門

      そうしたら次に【Alt+F11】を押して下さい。
      (AltとF11を同時に押したままの状態にします)

      すると以下のような画面が出てきます。

      VBE初期画面

      もし、画面左上で[+]VBAProject(book1)となっていたら[+]をクリックして
      中の、Sheet1(Sheet1)を出して下さいね。

      で、Sheet1(Sheet1)をダブルクリックすると、以下のように編集可能な画面になりますね。

      VBE編集画面

      あとはここにプログラムを書いていけばOKです。
      そこで解説のために、前回のプログラムを書いた画面を下記に示します。

      VBE前回のVBAコード付き画面

      ではまず画面の説明から致しますので下図をご覧ください。

      VBE画面説明

      それでは上図を参考に今回書いたVBAプログラムのソースコードの内容を順を追って説明して参ります。
      ソースコードとは上図の「VBAプログラム本文」と「コメント」を合わせたもののことを言います。

      ちなみに上記のようなVBEの画面から通常のエクセルの画面に戻るには【Alt+F11】を押して下さいね。
      Alt+F11】を押すたびに、普通のエクセルの画面→VBE→普通のエクセルの画面→VBE→・・・と
      画面が交互に切り替わることを思い出して下さいね!

      話を戻しましてソースコードの解説に入りますね。
       

      最初のサンプルコードの意味の解説

       
      Sub hello()・・・
      
           'A1セルの値に「Hello VBA!」という文字列をセット・・・
           Range("A1").Value = "Hello VBA!"・・・
      END Sub・・・
      
      ,らい泙脳紊ら下に順々にコードの意味を見ていきましょう!

      ,呂海痢屮廛蹈掘璽献磧廚量樵阿hello()とするという意味です。
      最初にうちは必ず、
       
      Sub 任意のプロシージャー名() ←()は必ずつけるルールです!
      
      命令1
      命令2
      ・
      ・
      ・
      
      END Sub
      

      という形でプログラムを組みます。

      で、プロシージャーというのが分かりづらい概念なのですが、要は、
      そのVBAプログラムの最小の実行単位を指します。
      言うなればプロシージャーは「部品」のようなものです。

      なので、実際に長いプログラムを書くときは
      たくさんのプロシージャーを作り、それらを組み合わせて、
      全体としてキチンとしたシステムを実現するわけです。

      しかし、小さなプログラムなら1個のプロシージャー(部品)だけでも十分という場合も多々あります。
      今回のサンプルプログラムは正にその例ですね。
      単一のプロシージャーだけで完結しています。

      「Sheet1のA1セルにHello! VBA!と表示する」

      だけの単純な処理なので複数のプロシージャーを組み合わせてプログラムを作る必要性が全くないというわけです。

      またプロシージャー名はなんでも好きな名前をつけてOKです。
      例えば以下のように書くこともできます。

      Sub 魚が食べたい()
          Range("A1").Value = "今日の夕食は「サンマ」です。";
      End Sub

      なんて書き方もできます。

      プロシージャー名は日本語でも英語でもなんでもOKです。
      但し後から見てその「部品」が何をするためのものなのか分かりやすい名前をつけましょう。
      現実世界でも例えば化粧ポーチに「救急箱」と名前をつけたら、何が何だか分からなくなりますよね?
      それと全く同じ原理です。

      Sub hello()・・・      

      'A1セルの値に「Hello VBA!」という文字列をセット・・・      
      Range("A1").Value = "Hello VBA!"・・・

      END Sub・・・

      次は△任垢諭緑の部分です。
      これはプログラムに直接影響しないコメントと呼ばれるもので
      プログラムを作る人のメモ書きです。

      その行の命令が何をしているのか?
      どんな目的で書かれたのか?

      などが後から見て、なるべく誰にでも分かるようにコメントを書いておきます。
      コメントを書こうがかくまいがプログラムの動作には何も影響しません。
      しかし一般にはたくさんコメントを書いた方が読みやすい綺麗なプログラムを作ることができるので
      コメントの多用を推奨する方は非常に多く存在します。

      コメントの書式は「'」に続いて書くとその行はコメントと見なされます。
      '」はキーボードの数字の7のキーをShiftを押しながら押下すると出てきます。

      さて、はいよいよエクセルへ命令を与えている行です。

      Range("セル名")で好きなセルを取得できます。
      Range("A1")と書けばA1セルの情報を操作する準備が出来ているということです。

      で、Range("A1").Valueと.Valueが続いていますね。
      これはA1セルの値という意味です。
      ここで登場するドット(.)は日本語に訳すと「~の」という意味です。

      例えば、「人間.手」ならば「人間【の】手」と訳します。

      Range("A1")というのはA1セルを表すわけですが、
      A1セルにはValue(値)以外にも様々な「パーツ」を持っています。
      例えばA1セルの横の長さ、縦の長さ、セルの色などです。
      これは「人間.手」だけでなく「人間.性別」や、「人間.年齢」などを考えることができるのと同じことです。
      以上の説明で「.」の持つ意味を直感的にある程度理解できたのではないかと思います。

      ところで、~.Valueの次に 「=」 がきますね。

      これは数学の「=」とは違う意味です。

      直感的に説明すると「←」に近い意味です。

      つまり「=」とは「=」の右辺を左辺に代入するという意味です。

      この場合、A1セルの値(Value)に”Hello VBA!”という文字列を代入しなさいという命令です。

      A1セルの値 ← ”Hello VBA!”

      というイメージです。

      続いてい任蓮◆END Sub」と書いて、そのプロシージャーの終わりを明言しています。
      END Subを書かないといったいどこまでで、プロシージャーが終わるのかが分からなくなってしまいます。
      文章を書くときに、文末には句点(。)をつけますよね。
      それと同じでプロシージャーの終わりには「END Sub」を付けます。

      以上で前回の解説で写していただいたプログラムの説明は終わりです。

      プロシージャーとか難しい言葉も出てきましたが、
      けっして難しいことではなく、ものすごく簡単なことなので、
      なんとなく腑に落ちなくても、

      「まぁ、慣れれば分かるっしょ」

      くらいの気楽な気持ちで捉えていただいてだいじょうぶですよ!

      さて、A1セルにハロー、ハローと文字列を表示するだけでは
      実務の役には立ちませんね。
      そこで次回からはより実践的なサンプルプログラムを通じて学習していきましょう。

      何卒当連載を今後とも宜しくお願い申し上げます♪


      【この記事の関連記事】
      入門!入門!エクセルVBA【1】


      [PR]Excel VBA 逆引き辞典パーフェクト 2013/2010/2007/2003対応

      ↑ExcelVBAを書く上で是非座右に置きたいVBAの辞書です。
      英語の勉強をするときに英和辞典をおともにしますよね。
      それと全く同じでExcelVBAを勉強するときにそばに1冊あると
      何かと重宝する一冊です。
      筆者も、共同執筆者のミーコさんも1冊持っています。




       
      2016.03.12 Saturday

      入門!入門!エクセルVBA!【1】

      [スポンサードリンク]

      0
        JUGEMテーマ:仕事のこと


        エクセル2007VBA入門
         

        エクセルVBAなんて簡単だ!

        入門!入門!エクセルVBA!」は「プログラミングって何?おいしいの?」という1行もプログラムを書いたことのない方でも楽しく簡単に挫折知らずにエクセルVBAを身につけることができるように企画された当ブログの連載記事です。

        新卒での就職、転職に役立つのはもちろん今会社でなにげなくエクセルを使っている方の大幅なスキルアップを強力に支援します。
        またExcelVBAのマイクロソフト公認資格が存在しているのをご存じでしょうか。

        この連載ではExcelVBA初心者を対象に、ExcelVBAベーシックという資格を取得するのに必要な知識を、
        分かりやすさ超重視で解説しています。


        関連記事

        入門!入門!エクセルVBA【2】
         

        Excelのバージョンと画面例について


        Excel2003以降の全てのエクセルVBAに対応していますよ(※Excel2003にももちろん対応しています)。

        画面例はExcel2007に統一しました。

        執筆者紹介

        ▼ミーコ

        ExcelVBA歴4年。某大手IT企業にて様々な業務を効率化する為のVBAのプログラムを設計段階から作成した経験を持つ。
        それらのシステムは私が退職した現在でも現役で稼働中です。
        ExcelVBAを勉強したきっかけは「就職に有利だから」という安易な理由からでしたが、
        その言葉に間違いはありませんでした。
        実際転職する際にも「業務でExcelVBAを扱っていた」という経験はとても大きな武器になっています。

        ▼ぱんだぷらす

        ExcelVBA歴11年。今では野球チームを持つようになった某IT企業でエクセルの師匠にVBAの初歩を教わる。

        その後は業務で、趣味でVBAを書いて楽しんでいる。
        解説が丁寧なのはいいが、話が長くなるのがたまに傷です。
        わたしがはじめてVBAに触れようと思ったときは

        「なんじゃこのクソ難しそうなものは!意味がわからん!嫌だ!逃げよう!」

        と一瞬思いましたが、やってみたら簡単でした。人は見かけによらず。
        怖い顔をしたおじさんが実は天使のように優しいことってありますよね?
        それと同じでVBAも難しそうに見えるだけで少し仲良くなったら物凄い簡単なんです。

        とにかくVBAは簡単です!かわいくてやさしいですクッキーモンスター安心して下さい!簡単ですよ!ぴのこ:)
         

        まずはマクロとかVBAとかそういう言葉を整理しよう!


        マクロというのはプログラムと同じ意味です。プログラムとは料理のレシピのようなものです。
        まずフライパンに油を敷く。フライパンの温度がもし80度を超えたならば生タマゴを入れる。
        卵の色が白くなってきたならば、フライ返しを使ってお皿に移す。みたいな感じです。

        VBAというのはヴィジュアルベーシックforアプリケーションの略で、数あるプログラミング言語の1つです。

        プログラミング言語には100を超える種類があり、その中の1つがVBAです。

        VBAは主にエクセルやアクセス上で手作業で行うことを、自動化するためのツールです。

        この「自動化」というのがキーワードです。

        手作業で2時間かかるルーチンワークを毎日やっていると想像してみて下さい。
        VBAでその手作業を自動化すれば1秒で終わりますよ?
        なんだかワクワクしませんか?
         

        とりあえずVBAのプログラムを書いてみよう

        昔から習うより慣れろなどと申しまして、特にパソコンの操作はスポーツや絵画の練習に似ていて、理論を習うのはもちろんですが、主に手を動かしてサンプルを写しとるという学習方法が圧倒的に有効です。

        というわけで早速、ExcelVBAのプログラムを書いて動かしてみましょう。

        以下の手順で作業を進めて下さいね。

        ※まずはExcelを開きます。2003でも2007でもなんでもOKです。
        画面は2007のもので説明しています。

        VBAを使えるようにExcelの設定をしましょう。
        Excelの初期設定ではマクロは使えないようになっているからです。
        まずはマクロに関するセキュリティレベルを一番下にして
        自由にマクロを動かせる状況を作ります。

        以下の画像・手順を参考に設定をお願いします。

        まずは「開発タブ」を選択します                    ↓ココ
        開発タブを選択します

        開発タブの左端に「!マクロのセキュリティ」という項目があるのでこれをクリックします。
        マクロのセキュリティを押下
        ↑ココ

        すると以下のようにセキュリティセンターが立ちあがります。
        ここで「全てのマクロを有効にする」にチェックを入れます。


        全てのマクロを有効にするを選択してOKボタンを押下


        最後にセキュリティセンターウインドウの右下にあるOKボタンを押下します。
        セキュリティーセンターのOKボタンを押下します。
        ↑ココ

        これでVBAを組む準備ができました。

        次に「Alt+F11」を押します。

        すると以下のような見慣れない画面が出てきます。

        「見慣れない」=「難しそう」と感じる方もいるかもしれません。
        筆者も最初はそう感じました。
        でもこの画面の使い方はとーーーーーっても簡単なので直ぐに慣れるでしょう。

        ちなみに下記の画面はVBAのコードを編集するエディター画面です。
        なのでVBE(ヴィジュアルベーシックエディター)と呼ばれています。

        ALT+F11でいつでもExcelの通常画面から呼び出せるので、
        「【ALT+F11】でVBEを起動してプログラムを書くんだな」
        という風に覚えていただけますとよろしいかと存じます。
        VBE初期画面

        ここで下図を参考にSheet1(Sheet1)をクリックします。
        VBE初期画面から新規作成

        下記のような画面が表示されたでしょうか。
        これでVBAという言語を使ってプログラミングをする準備が整いました!
        VBEにVBAを書く準備が出来た状態

        というわけでいきなり作例を画像で紹介したいと思います。下記の画面をご覧下さいませ。

        最初のsubプロシージャーのサンプル

        上記のコードの内容の解説は次回に回します。
        今は、ただ文言を謎の呪文として写し取って実際に動かしてみましょう。
        プログラミングの勉強はスポーツや絵画の学習によく似ています。
        まずはよくわからないけれど手本を実際に手を動かして真似ることからはじめることが
        とても効果的な勉強法なんです。
        理屈の塊のようなプログラミングの世界。
        にもかかわらずスポーツや絵画に似ているというのはちょっと不思議なことですね。

        さて、写し終えたでしょうか?

        Sub hello()
            Range("a1").value = "Hello VBA"
        End Sub

        と画面に書いたら下記の画像を参考に再生ボタンを押してください。
        これで今書いたプログラムが動きます。
        このプログラムはA1セルにHello VBAと表示するだけの質素なものですが、
        プログラミングの入門ではまずこの辺りから入るのが一種の定石になっております。

        再生ボタン押下でVBAを実行

        再生ボタンを押してもVBEの画面上では何もおきません。
        Excelの普通の画面に戻るには【Alt+F11】を押せばOKです。
        そうなんです。
        Alt+F11】は「エクセルの普通の画面」と「VBE」の間を交互に行き来するための
        超便利で強力なショートカットキーなのです。

        【Alt+F11】を押して、エクセルの元の画面に戻ったでしょうか。
        その画面が以下のようになっていれば大成功ですよゆう★♪

        VBAの実行結果

        これではじめてのVBAプログラミングを達成できました。
        ようこそVBAの世界へ!
         

        エクセルVBAを究めればなんでも作れる?


        VBAはエクセルのありとあらゆる機能をプログラムから制御できます。
        人間が手作業で行う作業はほとんど全部VBAで自動化できます。
        VBAでシューティングゲームを作ることだってできちゃいます。
         

        入門!入門!エクセルVBA!次回予告!

        次回はもう少し長めのサンプルプログラムを書いて、
        一行一行のコードの意味をしっかりと解説していきたいと思います。
        今後とも私共の「入門!入門!エクセルVBA!」を宜しくお願い申し上げます。



        [PR]Excel VBA 逆引き辞典パーフェクト 2013/2010/2007/2003対応

        ↑ExcelVBAを書く上で是非座右に置きたいVBAの辞書です。
        英語の勉強をするときに英和辞典をおともにしますよね。
        それと全く同じでExcelVBAを勉強するときにそばに1冊あると
        何かと重宝する一冊です。
        筆者も、共同執筆者のミーコさんも1冊持っています。


        関連記事

        入門!入門!エクセルVBA【2】


         
        2015.07.01 Wednesday

        JavaやC、PHPの文法は知ってるけどVBAの文法は?な場合にこれだけは押さえておきたいVBAの文法

        [スポンサードリンク]

        0
          JavaやC、PHPの文法は知ってるけどVBAの文法は?な場合にこれだけは押さえておきたいVBAの文法

          メソッドの文法−見慣れぬ演算子(:=)に注意

          メソッド名 引数名 := 設定値

          引数が複数ある場合の文法 ⇒ (,)で区切る。

          メソッド名 引数1:=設定値1引数2:=設定値2・・・

          ユーザー定義関数の文法−return文がない(涙)、関数名がreturn文だ!

          Function 関数名(引数名 as 引数のデータ型) as 戻り値のデータ型
              (処理)
              関数名 = 戻したい値(戻り値)
          End Function



          Point:関数名がreturn文と同じ働きをするよ!Objectも返せるよ!
          また複数の引数を定義したい場合はカンマ区切りで指定するよ!

          Point:プロシージャにも引数を定義できるよ。
          但し引数付きのプロシージャーは単独では使えないので、
          他のプロシージャーからCallで呼び出して使うよ( eg. Call hoge(10) )。


          Excel VBA 本格入門 〜日常業務の自動化からアプリケーション開発まで〜
           

          JUGEMテーマ:プログラミング
          2015.06.17 Wednesday

          VBAに入門するために簡単な占いプログラムを書いてみた

          [スポンサードリンク]

          0
            JUGEMテーマ:プログラミング

            VBA占いサンプル

            Sub 占い()

                Dim 乱数 As Integer
                Dim 占い結果を表す文言 As String

                乱数 = ゼロから9の乱数を発生させて返す()
                
                占い結果を表す文言 = 乱数の値によって占い結果を示す文言をセット(乱数)
                
                Sheet2のA1セルに占い結果を表す文言の内容をセットする (占い結果を表す文言)
                

            End Sub



            Function ゼロから9の乱数を発生させて返す()

            'Rnd関数の少数第一位を整数部にもってきて格納、0から9の乱数を格納しその値を返す
            ゼロから9の乱数を発生させて返す = Rnd * 10 'VBAでは 関数名=returnしたい値 という文法らしい

            End Function



            Function 乱数の値によって占い結果を示す文言をセット(乱数 As Integer)
                 
                 If 乱数 < 3 Then 'on case of 0,1,2 and not(3,4,5,6,7,8,9) よって 30%
                    
                    占い結果を表す文言 = "大吉"
                    乱数の値によって占い結果を示す文言をセット = 占い結果を表す文言
                    
                ElseIf 乱数 > 6 Then 'on case of not(1,2) and not(3,4,5,6) and 7,8,9 よって 30%
                    
                    占い結果を表す文言 = "吉"
                    乱数の値によって占い結果を示す文言をセット = 占い結果を表す文言
                
                Else
                    
                    占い結果を表す文言 = "超凶即死" 'on case of not(1,2) and not(7,8,9) and 3,4,5,6 よって 40%
                    乱数の値によって占い結果を示す文言をセット = 占い結果を表す文言
                
                End If

            End Function



            Function Sheet2のA1セルに占い結果を表す文言の内容をセットする(占い結果を表す文言 As String)

                Sheet2.Range("A1") = 占い結果を表す文言

            End Function

            [スポンサードリンク]

            ● Profile ●
            スポンサードリンク

            姉妹ブログ2よろしくっす♪

            rurucafe




























            ● ●
            Selected Entries
            Categories
                    
            Others
            Mobile
            qrcode
            Powered by
            30days Album
            無料ブログ作成サービス JUGEM