VBA100本ノック

Myネーミングルール


ループのカウンター


変数名 使い方
i 一重ループでのイテレーション用
j 二重ループでの二番目のイテレーション用
k 三重ループでの三番目のイテレーション用

定数


すべて大文字。単語を区切る時は、_で区切る。

(例)

Const TAX_RATE = 0.8




変数名の付け方の例



アッパーキャメルケース


先頭は大文字、区切り文字は大文字

ローワーキャメル


先頭は小文字、区切り文字は小文字

スネークケース


単語と単語の間を"_"で区切る

定数


大文字のスケークケースで指定される場合が多い

MAX_NUMBER など

変数の範囲


ローカル変数 


プロシージャ内 プロシージャの中で宣言

モジュール(レベル)変数 


モジュール内 モジュールの最初の宣言セクションで、Privateなどで宣言

グローバル変数


全モジュール  モジュールの最初の宣言セクションで、Public などで宣言


ルール



・変数の宣言時は、型を明示的に指定する(暗黙のVariant 型としない)

・変数の宣言を強制する。Option Explicit を入れる

・ループのカウンターは、IntegerかLongにする。パフォーマンスが良いことが多い

・分岐は、なるべくIF文。Select Case ではない

・文字列が空白(Null)かどうかの判定は、= よりも、LEN(文字列) = 0

  パフォーマンスが良いことが多い

・不必要な画面更新をなくす。

   Application.SecreenUpdate = False



コメント


1.文法


Rem あるいは「'」  で始まる行は、コメントです。

2.サンプル


Sub Sub1()

   Rem コメントです
 ' コメントです
 
 Debug.Print ("出力されます")
 
End Sub



識別子のネーミング


1.文法


次のような命名規則がある。

・数字や記号ではじめては、いけない

・アンダースコア以外の記号、空白は利用できない

・長さは、255文字以内

・予約語との重複はダメ

・同じスコープ内での重複利用はできない



VBA 変数宣言の注意


Dim i , j  As Long

だと、iは、varient型になる。

iも、Long にしたい場合、

Dim i As Long , j As Long

と宣言する。




デバグ出力



1.文法


Debug.Print (表示内容)

で、イミディエイトウィンドウに表示されます。

2.サンプル


Sub Sub1()

    Debug.Print ("イミディエイトウィンドウに表示されます")


End Sub

3.実行


実行すると、イミディエイトウィンドウに

イミディエイトウィンドウに表示されます」

が表示されます。



定数の定義



1.文法


Const 

をつけて、変数を定義します。

Const name [ As type ] = value

です。

2.サンプル


Sub Sub1()

    '+-- 定数の定義
  Const X As Integer = 5
  
  Debug.Print (X)

End Sub

3.実行


イミディエイトウィンドウに

5

が表示されます。



 Is演算子


1.文法


Is演算子は、2つのオブジェクトの参照が等しいかを判定する演算子。

object1 Is object2

で、object1とobject2が、同じオブジェクトを参照しているときは、True 、

そうでないときは、False となる。



Nothing


1.文法


Nothingは、オブジェクトへの参照がない状態を表す値。

参照設定がなされていない変数の値は、Nothingとなる。

2.サンプル


Sub Sub1()

  '+-- 宣言のみで参照なし
  Dim c As Collection
  
  Debug.Print (c Is Nothing)
  
  '+-- オブジェクトへの参照
  
  Set c = New Collection
  
  Debug.Print (c Is Nothing)

End Sub


3.実行


イミディエイトウィンドウに

True
False

が表示されます。



リファクタリング


(1)メソッドの抽出


プロシージャを分割する。

(2)コメント


「何をやるか」「どうやるか」ではなく、「なぜ」を記述する。

(3)Arrayを、Ojbectにする


配列の1番目がID、2番目が名前等の構造よりも、Object。


(4)マジックナンバーを、コンスタントに置き換える


(5)条件判定を単純にする


(6)ループをコントロールするフラグをなくす


break や return を利用する。

(7)エラーコードでの処理を、例外に置き換える

(8)変数の宣言を必須にする





ブック中のワークシートの数を取得する


1. 文法


Countプロパティを利用する。

2.サンプル


Sub MySub()
  
  Debug.Print Worksheets.Count
  
End Sub

3.実行結果


シートの数が表示されました。



その他


自動構文チェックをOFFにする



・VBEで、[ツール]-[オプション]-[編集]タグで、ON/OFF切り替えます。

・構文エラーのとき、うっとしい、ダイアログが出ないようにする。

・ただし、構文チェック自体は、動いており、エラーは赤く表示されます。





ワークシートを追加&名前をつける



1.サンプル


Sub Main()
  With Worksheets.Add
        .Name = "追加されたシート"
 End With
End Sub

2.実行


実行すると、「追加されたシート」という名前のシートが追加されます。





0 件のコメント:

コメントを投稿

アルゴリズムの考え方

総当たりアルゴリズム すべての場合をためし、解を求める。 近似アルゴリズム  ・正解に近い解を探す ・正解との誤差がある範囲におさまると保証されているものを  精度保証付アルゴリズムという。 ・精度の保証のないアルゴリズムを、発見的手法(ヒューリスティック)    という。