2020年03月15日

VBAに登場する意味不明な用語の意味 “モジュール”とか“ステートメント”とか / Excel / VBA

Excel VBAでは色々な横文字が登場するのだけど、なんかつかみどころない単語が多い!
と、単にボキャブラリーが無いだけなのを棚に上げるのだけど、
ということで、あまり深堀は出来ないけど簡単にまとめてみた!

プロジェクト
1つのワークブック(Excelファイル)のマクロ群になります。
VBAの編集画面では左上のプロジェクトエクスプローラにの一番上の太字で表示されている“VBAProject( )”になります。( )内はファイル名になっります。
プロジェクトに“モジュール”、“プロシージャ”、“ステートメント”が構成されます。
20200308-01.JPG

モジュール
VBAのコードを書いて保存する場所のことで、ここにマクロのプログラム、プロシージャが作られます。
1つのモージュールには複数のプロシージャを作ることができます。
一般的なVBAのコードは“標準モージュール”に書き込みます。またそれとは別にオブジェクトに付随するモジュールがあり、ワークシート付随する“シートモジュール”、ワークブックに付随する“ブックモジュール”、フォームに付随する“フォームモジュール”があります。
20200308-02.JPG

プロシージャ
sub 〜 End sub で書かれる1つのマクロを実行するプログラムのまとまりのことです。
“マクロ”と言うのはソフトの操作を自動化させたものの総称なので、1つのプロシージャで1つのマクロを作る場合もありますし、複数のプロシージャで1つのマクロを構成する場合もあります。ですが、“プロシージャ”と言うのはプログラミングサイドの用語で片や“マクロ”はユーザーサイド(エクセル寄り)の用語になります。
 標準モジュールに作られるプログラムを“標準プロシージャ”と言い、「F5」キーや「マクロの実行」で実行されるプロシージャです。またオブジェクトに付随するモジュールに作られるプログラムを“イベントプロシージャ”と言い、ユーザーの操作によって起きるイベントにより自動で実行するプロシージャです。
例えば、ブックモジュールにはExcelを起動した時、保存した時等のイベントプロシージャ
シートモジュールにはセルの値を変更した時、シートを追加した時等のイベントプロシージャ
フォームモジュールにはボタンをクリックした時等のイベントプロシージャを作ります。
20200308-03.JPG

SubプロシージャとFunctionプロシージャ
Sub マクロ名() 〜 End Subで記述されるSubプロシージャの他に、Function 関数名() 〜 End Functionで記述されるFunctionプロシージャがあります。Functionプロシージャは戻り値で結果を返すことができます。

ステートメント
VBAで記述される最小単位の1行単位のプログラム。if〜then、for〜next 等は複数行にまたがります。
例えば、“Sub”、“Functoin”、“Dim”、“Call”、“End”、“For〜 Next”、“GoTo”、“If〜Then〜Else” 等があります。
20200308-04.JPG

まだまだ、聴きなれない用語が出てきますが、今日はここいらで勘弁してやろう!?
ほなまた!



前のページ:
次のページ:

関連ページ


posted by haku1569 at 18:42| Excel VBA | このブログの読者になる | 更新情報をチェックする

2020年02月23日

セルの行番号、列番号、アドレス(絶対位置)を取得する / Excel / VBA

Excel VBAでセルの列番号、行番号、アドレスを取得してみます。
*下の方で使用例のExcelファイルがダウンロードできます。

1.セルの行番号を取得する

***.Row
***:行番号を取得したいセルを指定

例 セル“A1”の行番号(=1)を取得
Cells(1,1).Row

2.セルの列番号を取得する

***.Column
***:列番号を取得したいセルを指定

例 セル“B1”の列番号(=2)を取得
Cells(1,2).Column

3.セルのアドレス(絶対位置)を取得する

***.Address
***:アドレスを取得したいセルを指定

例 セル“C1”のアドレス(=$C$1)を取得
Cells(1,3).Adress

使用例

Sub Macro1()

'変数R、C、A
Dim R
Dim C
Dim A

'セル“A1”の行番号を変数Rに格納
R = Cells(1, 1).Row

'セル“B1”の列番号を変数Cに格納
C = Cells(1, 2).Column

'セル“C1”のアドレスを変数Aに格納
A = Cells(1, 3).Address

'変数R、C、Aをイミディエイトウィンドウに表示
Debug.Print (R)
Debug.Print (C)
Debug.Print (A)

End Sub

20200222.JPG

サンプルExcelファイル:セルの行、列、アドレス.zip


前のページ:
次のページ:


関連ページ




車のバッテリーが完全に上がってしまってもかけることが出来る25,000mAhの大容量!

車のエンジンスターターだけでなく、スマホの充電、LEDライトとしても使用できます。





ラベル:.Row .Column .Address
posted by haku1569 at 14:50| Excel VBA | このブログの読者になる | 更新情報をチェックする

2020年02月15日

IFステートメント~条件分岐 / VBA / Excel

ExcelのVBAで、ある条件をによって、処理を分岐させるのが"IF文(ステートメント)"です。
「もし※※だったら、処理A、そうじゃなかったら処理B」って言うやつです。
*下の方でサンプルExcelファイルがダウンロードできます。
20200215-01.jpg

If 条件式 Then条件を満たした時 / 真 true)処理A

 Else(条件を満たさない時 / 偽 false)処理B

End If

“Else 処理B” は省略することができます。
すると条件を満たさない時はEnd If でIfステートメントが終了します。

条件式で使用する演算子の種類

比較演算子
2つ値や式を比較して、結果を真(true)偽(false)で返します
演算子意味
=等しい
<>等しくない
>より大きい
>=以上
<より小さい
<=以下

論理演算子
2つの条件式を組み合わせた条件式を作り結果を真(true)偽(false)で返します
演算子意味結果
And
理論積
(且つ)
真(true)And 真(true)真(true)
真(true)And 偽(false)偽(false)
偽(false)And 真(true)偽(false)
偽(false)And 偽(false)偽(false)
Or
理論和
(または)
真(true)Or 真(true)真(true)
真(true)Or 偽(false)真(true)
偽(false)Or 真(true)真(true)
偽(false)Or 偽(false)偽(false)
Xor
排他理論和
(どちらか1つだけ真のとき真)
真(true)Xor 真(true)偽(false)
真(true)Xor 偽(false)真(true)
偽(false)Xor 真(true)真(true)
偽(false)Xor 偽(false)偽(false)
Not理論否定Not 真(true)偽(false)
Not 偽(false)真(true)

使用例
1)セルの値が30以上だったら隣のセルに"合格"、じゃなかったら"追試"と表示する

Sub macro1()
'もしセルA2が30以下なら
If Cells(2, 1) >= 30 Then
'セルB2に“合格”と表示
Cells(2, 2) = "合格"
'そうでなかったら、
Else
'セルB2に“追試”と表示
Cells(2, 2) = "追試"
End If
End Sub

20200216-01.JPG


2)Elseの省略、セルの値が30以上だったら隣のセルに"合格"と表示する

Sub macro2()
'もしセルA2が30以下なら
If Cells(2, 1) >= 30 Then
'セルB2に“合格”と表示
Cells(2, 2) = "合格"
End If
End Sub

20200216-02.JPG


3)論理演算子"And"の使用例
  算数のセルの値が30以上、且つ、国語のセルの値が30以上、だったら、隣のセルに"合格"と表示する

Sub macro3()
'もしセルA5が30以上 かつ セルB5が30以上 ならば
If Cells(5, 1) >= 30 And Cells(5, 2) >= 30 Then
'セルC5に合格と表示
Cells(5, 3) = "合格"
End If
End Sub

20200216-03.JPG

 サンプルExcelファイル:if文.zip




最近のマキタって電動工具だけにとどまらず、充電池をベースにした様々な機器のバリエーションを増やしてて面白いですよ。



ラベル:if
posted by haku1569 at 18:54| Excel VBA | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。