[PR]牝綾
Infoseek 喨涓截


【HOME】 【INDEX】 【第1回】 【第2回】


《はじめに》
 さてさて、VBAのおおまかな概要については、前回で終わりじゃな、

 VBAのプログラムについては第1回でも、述べたように
 プロシージャにプログラムを書いていくことになるんだけど・・・ (*^_^*)

 VBAプログラムを書くには、やはり作成上の規則というものがあって、
 それらの規則については、VBAのヘルプを見てもわかると思うけど
 凄い量だよね、実に圧倒されてしまう。
 でも、それらを全部知る必要はないと思うし、そんなことは、
 小生のような凡人には、とうていできっこない相談だ!!

 で、小生は、VBAのプログラムを初めて作成する人にとって、
 これだけは知っておいてほしい、役にたつだろう、
 そういった基本的なことをこれから、書いていこうと思っているわけじゃ。

 小生のひとりよがりに、お付き合い願えたら、うれしいものじゃわい!!
 それでは、はじまり、はじまり・・・!

 プログラミングの基礎  第1回
 


1 Public と Private
  基本型
   Public Sub(又は Function) プロシージャ名 ()
   Private Sub(又は Function) プロシージャ名 ()

 今まで、説明はしていないのだけれど Subプロシージャや 
 Functionプロシージャ の前には 有効範囲(スコープ)と言って、
 Public と Private がついている。
 そして、この二つの意味は、他のモジュールから呼び出しができるかどうか
 ということであります。
  

 Publicは呼び出し可能なプロシージャという意味なんだけど、
 通常、Sub だけの場合、Publicが省略されています。

 逆に、Private がついていれば、他のモジュール内のプロシージャからの
 呼び出しができないようにします。
 (同一モジュール内では、呼び出し可能です)

 この有効範囲については、次の機会に、もう少し詳しく述べてみたいと思いますが
 この有効範囲については、変数や定数にも適用されます。

 
2 プログラムの構造 
  
 ★プログラムの構造
の基本型
  プロシージャ内の基本的なプログラミング構造は、次のようになると思います。

------------Subプロシージャ内-------------------------
 (Public) Subプロシージャ名 (変数1 as データ型,・・・・) 
    ●定数、変数の宣言
       プログラム中に、計算などをさせた場合、その値を入れておきたい
      ものが必要になります。
      値が変化するものを、入れておく入れ物が、変数
      値が変化しないものを入れておく入れ物が、定数と
      考えればいいんじゃないかな。
      
      ・宣言
        ものを入れるのでも、その入れ物が、どんな形のもか
       あるいは、どんな大きさのものか、何をいれるのかといったことを
       決めておけば、収納もしやすいし、仕事も図るだろう!!
       変数や定数にしても同じことがいえるよ。
       そういった、型や、形をあらかじめ決めておくことを、
       ここでは「宣言」っていう。
       だから、変数や定数の宣言をしておくことによって
       効率のいい仕事ができるというもんだね。
       宣言は、絶対しておかないといけないというものでもないのだけれど、
       でも、宣言はできるだけしておいた方が、小生は、いいと思う。

       ・宣言の置き場所
        それと、宣言は、それらを使用する前に宣言しておけば、
        どこに置いても構わないことになっているんです。
        でも、あっちこっちに宣言文を置いておくと、重複したりするとエラーになるので
        なるべく、冒頭(はじめの方って意味)に書いて、整理しておいたほうがわかり易いです。
        

       ・基本型
        一応、基本型だけ、ここでは書いておきます。

        ★変数の基本型
          有効範囲 変数名 データ型
          変数名はユーザが決めます。詳しいことは後ほど書いていきたいと思います
        ★定数の基本型
          有効範囲 Const 定数名 【データ型:省略可】 = 数値 又は "文字"
           (文字は ""でくくる)


    ●プログラム記述

     ・繰り返し処理
       Loop文
       For 文

     ・条件による分岐
       If 文
       Select 文

     ・実行制御
       Goto 文
       Stop 文
       Exit 文
       End 文

     ・演算子の利用
       算術
       文字列
       比較
       Is
       論理

     ・関数の利用
       sum Min Max Avarage Etc.
     ・ワークブックやワークシートの利用
      Woorkbook(s)、Worksheet(s)、Cell(s)、Range()

     ・他のプロシージャの呼び出しとデータの受け渡し

     ・エクセルの機能の利用 などなど・・・
     
    
   End Sub (最後に必ず End  Subで終わる)

  -----------------------------------------------------

 というわけで、プログラムを作成していく構造、基本型は上記のような形で
 進められていくと思ってください。
  
 
3 名前付けの規則

  プロシージャや変数、定数の名前付は、私たちユーザーが自由に付けることが
 できるんだけど、それは、なんでもかんでもいいというわけじゃないんだ。
 戸籍でつける名前にも、つけてはならない言葉があるようにね。
  で、VBAの名前付けにも規則があるので、ここで少し説明しておくことにします。

 ●使える文字
   使える文字は、英数字、漢字、ひらがな、かたかな、アンダースコア(_) です。
   (これ以外の文字は使用不可です)

   注意: それと先頭に アンダースコア( _ ) は付ける事ができません。

    例
      _ABC という使い方はできない
      +-13 といった記号を含む文字も使用不可

 ●英字は、大文字小文字の区別は、なし
   大文字、小文字、またはそれとの組合せをしても、区別されません。
   ABC も abc も Abc も aBc 等 これらの組合せは、同じ扱いになるんです。

 ●文字数
   文字数は、半角で255、全角で127文字まで使えます。
   でも、あんまり長い名前はあえてつけないよねぇ〜 
   小生は、日本語入力が手間なので、できるだけ、英字で書いています。
   これも、好き好きなので、自分の使いやすいようにすれば、いいと思います。
   
 ●VBAで組み込まれている名前は使えない
   VBAで組み込まれている、プロパティ名や、メソッド名、関数名、組み込み定数
   などは、使用することができないとなっています。
   でも、その名前を使用してもエラーがでるので、結果的に使えないということになります。
 
 ●適用範囲内での、同一名の使用
   宣言される文字や、プロシージャ名は、適用範囲内での同一名は使えません。
   これも、結果的に、実行すればエラーが出るので、わかります。
   

4 ステートメント
 VBAのプログラムでは、処理を実行する、つまり命令文を記述していきますが
 その命令文のことを、ステートメントといいます。
 通常は、1行ごとに書いていきますが、ステートメントは複数に書くこともできます。
 そのことを、マルチステートメントと呼ばれています。
 そのときには コロン「 : 」 で区切る約束になっています。
 例
  ・通常のステートメントの場合
   A = B
   C = D
  ・マルチステートメントの場合( 「 : 」が区切り文字になります)
   A=B : C=D

 また、長いステートメントなどの場合は スペース+アンダースコア (  _ ) 
 を行末に記入して、ステートメントを分割して、記述することができます。
 例
 ・長いステートメントの場合(長くてわかりにくい)の場合
  例
    Q = MsgBox("答えがあっていますか。" &  Chr(13 ) & "あっていれば 「はい」"&  Chr(13 ) &  "間違っていれば 「いいえ」のボタンを押してください", vbYesNo + vbQestion, "問題")

  例 文末を「  _ 」 で分割して、わかり易くしてみました。

    Q = MsgBox("答えがあっていますか。" &  Chr(13 ) & _
     "あっていれば 「はい」"&  Chr(13 ) &  _
     "間違っていれば 「いいえ」のボタンを押してください",  _
      vbYesNo + vbQestion, "問題")

     (このステートメントの内容については、また別のときに説明したいと思います。)
  
  また、この例のように、命令文の前の空白挿入は、自由に入れることもできます。
  そして、ステートメントとステートメントの間の行は、空行になっていてもかまいません。

  例
     A = B
     C = D

            B = C

  C=D と B=C の行が空いていますが、プログラム的には何も支障はありません。

  できるだけ、自分が見ても、他人が見てもわかり易い、見やすいように
  記述していきたいものです。

 ●オブジェクトの記述省略 「With ステートメント」

   With ステートメントと呼ばれる、このステートメントを使用すれば
   オブジェクトの繰り返し記述を省略することができます。
   
   基本的には次のようになります。

   With オブジェクト
     .プロパティ
     .メソッド
     処理
   End with
   
   最後は必ず End With で終わります。

    ・Withを使わない例です

     Worksheet("Sheet1").Range("A1") .Clear
     Worksheet("Sheet1").Range("A1").Value = 100
     Worksheet("Sheet1").Range("A1") .Font.ColorIndex = 10
   
   ・Withを使った場合の例です

     With Worksheet("Sheet1").Range("A1")
        .Clear
       .Value = 100
       .Font.ColorIndex = 10
     End With

  注意:
   Withステートメントを使用すれば、プログラムが随分見やすくなりますネ
   しかし、このWithの対象となるオブジェクトは、
   ひとつしか処理できないことになっています。

   Withのあとには、複数のオブジェクトは、記述できないのです。

   でも、Withの範囲の中に、違うオブジェクトでなら、Withステートメントは
   使用することができます。このようなことを ネストといいますが、
   例を書いてみましたので、小生のいいたいことがわかると思いますが、
   
   例 Withステートメントのネスト(基本型)

    With オブジェクト1
       処理
       .処理
        ・・・・
     '次からネストになります。
        With オブジェクト2(オブジェクト1とは異なるオブジェクト)
         処理
         .処理
         ・・・・
        End With
     ’ネストが終わり

      .処理
      処理
       ・・・・
     End With


5 コメント文

 コメント文は実行されないコードをいいます。
 文字の前に シングルクォーテーション 「 ' 」を記述すると、コメント文になり、
 この文字については、プログラムにはなりません。
 
 例

   'A、Bは宣言されていませんが、Variantです。
   A  = B  'BはAに代入されます。(コメント文)
 
 コメントは、プログラムが自分で理解しやすいように
 あるいは、他の人に、見てもらう場合にも、重宝なアシスタントに
 なると思いますので、うまく活用してくださいネ。

 では、今日はここまで、 See You !!  (^_^)/~~~



   To be Continued …

03/10/22 作成


           【HOME】 【INDEX】 【第1回】 【第2回】