Excel Excel VBA

[Excel VBA]  これで理解できる!マクロの変数を解説。

 

 

本記事はエクセル2019で動作確認を行っています。

必ずご自身でVBAを記述しましょう。

手を動かすことが、習得への近道になります。

 

困ってます
ExcelVBAの学習をはじめましたが、変数の意味・使い方が理解できません。

 

本記事を読めば変数の考え方が分かります。

ExcelVBA入門者が最初につまづきやすいポイントが変数です。

理解できないところは何度も見返すようにしましょう。

 

それでは本題に入ります。

 

VBAを記述する時、さまざまな場面で数値や文字列を使用します。

この時、直接値を指定することもできますが、値を格納できる「変数(へんすう)」を利用することもできます。

「変数」を使用するとマクロの処理をより便利に行えると理解しておいて下さい。

 

変数の基本的知識

  • 変数には値によってデータの型が異なる。
  • 変数はその型を宣言する必要がある。
  • 変数は宣言後、値を代入することができる。

です。

 

一つずつ見ていきましょう。

 

変数のデータ型

 

VBAを記述するのに文字列や数値、日付などを使用します。

変数を使用する時、たとえば文字列ならString、日付ならDateという風に型が異なります。

以下が代表的なデータの型です。

 

データ型 VBAの書き方
文字列型 String 文字
ブール型 Boolean TrueまたはFalse
整数型 Integer -32768~32767の整数
長整数型 Long -2147483648~2147483647の整数
日付型 Date 日付
バリアント型 Variant すべての値

*Single Double Object などもある。

 

 

変数を宣言する。

 

変数という入れ物に入れたい内容は、その種類により宣言することでエクセルに理解させます。

ここでは、変数の宣言方法と強制的に変数宣言させる方法を解説します。

 

変数の宣言方法

変数の宣言にはDimステートメントを使用します。

 

Dim 変数名 As データ型

 

行の値を変数にしたい場合、行の値は数字ですよね。

なので、整数のデータ型であるIntegerを使います。

変数名を「row」という名前にしてみましょう。この場合の記述の仕方は

Dim row As Integer

となります。

これを変数を使う前に宣言するようにします。

 

 

また、カンマ(,)で区切ることで、複数の変数を宣言することができます。

Dim 変数名 As データ型 , 変数名 As データ型

 

注意

Dim 変数名 , 変数名 as データ型

これは最後の変数名のみ指定したデータ型が適用されます。

それ以外はVariant型に自動的になりますので気を付けましょう。

 

 

変数の宣言を強制する方法

 

変数宣言は変数を使用するなら必須になります。

入力ミスを防ぐために「変数の宣言を強制する」方法を知っておきましょう。

 

VBEを起動>「ツール」>「オプション」>「変数の宣言を強制する」にチェック>「OK」をクリック

VBEの起動方法についてはこちらを

 

これで、標準モジュールのコードウィンドウの最上部に「Option Explicit」の表示がされました。

変数を宣言せずにコードを書くとエラーが表示されるようになったので、記述ミスの防止になります。

 

 

変数に値を代入する。

 

変数に値を代入するには変数名と値を「=」でつなげてあげます。

変数名=代入する値

これは左辺と右辺が等しいわけではなく、左辺に右辺を代入するということなので注意してください。

変数名はExcelVBAに関してはひらがな・漢字も可です。

ただ、自分で使うだけや社内で共通ルールがあるならいいのですが、社外に出たり、他人も使用する可能性があれば英語を使用するほうが無難です。

 

ここまで読めれば、一度実際に記述してみましょう。

 

Sub 変数練習()
  
  ’変数を宣言
  Dim wsName As String 
 
  ’変数名にアクティブシートの名前を代入
  wsName=ActiveSheet.Name 

  ’A1のセルに変数に格納された値を代入
  Range("A1").Value=wsName 

End Sub

A1のセルに今見ているシートの名前が入力されていれば大成功です!

ちなみに解説のためにコメントをたくさん記述しています。

普段は必要なところだけにコメントは使用しましょう。

 

オブジェクト型変数について

 

オブジェクトとは、エクセルが操作できる対象のモノを指します。

具体的には、「Worksheet」「Workbook」「Range」などのことです。

 

オブジェクト型の変数は2点気をつけて記述します。

 

Dim 変数名 As オブジェクトの種類   

(例)Dim ws As Worksheet

のように記述します。

 

オブジェクト型変数にオブジェクトを格納するには、Setステートメントを使用します。

 

Set 変数名=格納するオブジェクト

(例)Set sh=Worksheets(”sheet2”)

 

ここでも、実際に記述してみましょう。

問題

エクセルの新規ブックを開き、シートを追加して「sheet2」を作っておきましょう。

「sheet1」から下記のマクロを実行してみて下さい。

 

Sub 変数練習2()

  Dim sh As Worksheet

  Set sh=Worksheets(“sheet2”)

  sh.Activate

End Sub

 

Sheet1からSheet2に移動しましたか?

 

変数の適用範囲

 

変数は記述する位置で、適用範囲がかわります。

①プロシージャレベル:プロシージャ内で宣言した変数は、プロシージャ内のみ。その後破棄。

②モジュールレベル:モジュールシートの最初に宣言した変数は、モジュール内で適用。その後破棄。

③すべてのモジュールのプロシージャレベル:Public 変数 As データ型 と宣言するとすべてに適用。

 

まとめ:変数は慣れれば怖くない!

 

  • 変数には値によってデータの型が異なる。
  • 変数はその型を宣言する必要がある。
  • 変数は宣言後、値を代入することができる。
  • オブジェクト型変数の使い方。
  • 変数の適用範囲

について見てきました。

 

変数はExcelVBAには必須の知識です。

理解できないところは何度も読むようにして下さいね。

最後までお付き合いいただきありがとうございました。

 

 

 

-Excel, Excel VBA
-

Copyright© Ronpeee blog , 2023 All Rights Reserved.