こんにちは。
これまでのまとめも含め、課題をクリアするためのマクロを作成していきましょう
まずは、課題にある表を作成しましょう。

上記の画面のように、処理を実施するための表を作成します。
A列に「北海道」から「沖縄県」を入力し、B列は空白にしてください。
D列には「群馬県」から「東京都」を入力し、E列は画面のとおりの日付を入力しましょう。
ここは、必ず課題と同じである必要はありません。好きなように入力してかまいません。
ここでは、課題画面に沿っての説明ですので、その点はご注意ください。
・・・・入力は終わりましたか?ファイル保存を忘れずに。
プログラムを作成するために「VBE画面」を開きましょう。
開き方については「エクセルマクロの基本から3」で説明していますので、
分からなくなった方は再度確認してくださいね。

上記の画面まで進みましたか?
次に、作成するマクロの名前をつけましょう。
VBE画面のツールバーの「挿入」をクリックします。表示されたメニューの「プロシージャ」を選択します。
下記のようなメニューが表示されますので、「名前」に「表入力」と入力し、”OK”を押して下さい。
他は変更しなくて大丈夫です。

VBE画面の「Option Explicit」の下に
Publick Sub 表入力()
End Sub
と表示されましたか?
表示されたら準備OKです
では、プログラムを書いていきましょう。
一つ約束してください。
プログラム文は必ず自らタイピングしてください。コピペでは覚えることができません。たくさん書くことが大事です!
変数の宣言
ますは、プログラムで使用する変数を決めて、宣言しましょう。
変数・・?宣言・・・?
となった方は「エクセルマクロの基本から1」「エクセルマクロの基本から2」を確認してくだい!
今回必要な変数を決めていきましょう!
と言いつつ最初からすべての変数を決ることは実際難しいです。プログラムを作成していくうちに必要になったり、結局使わなかったりと・・・・。
足りなくなったら後で設定すれば良いので、作成時に必要だと思う変数を設定しましょう。
今回は変数の使いまわしは行いません。面倒ですので。
慣れてくると使いまわしをして変数を少なくしていきましょう。
では・・・・。
必要な構文をこれまで勉強してきました。その構文単位で必要な変数を考えていきましょう。
使う構文は「For~Next」「If~then~End If」でした。
「For~Next」は、データを順番に処理してく構文でした。その際、一つずつ増やしてく変数が必要でした。それを入れ子でつかいますので、2つ必要ですね。
一つ目を「ⅰ」二つ目を「j」としましょう。(ご自身の好きな文字を変数にしてもOKです。)
その次はどこまで処理をするのか「最終行」を取得する必要がありましたね。
なので、その変数を「LastRow01」「LastRow02」としましょう。
次はと・・・。「If~End If」では、データがすべて処理されたかをカウントする変数が必要でした。
これは、「Ck_Count」としましょう。
ひとまずこれでよさそうなので、変数宣言部分を書いていきましょう!
VBE画面の「Public Sub 表入力()」と「End Sub」の間に変数宣言を書いていきます。
Public Sub 表入力()
Dim i as Long, j as Long, LastRow01 as Long, LastRow02 as Long, Ck_Count as Long
End Sub
これで変数宣言は終了です!!
本文の作成(最終行の取得と確認)
プログラムは書いた上から順番に処理されています。
なので、変数は処理時に必要な「値」を取得しておかなければなりません。
プログラムを書く際は、「上から順番に処理される」「変数は必要となる前に値を取得する」
この2点に注意が必要です!
今回使用している変数はすべて数値型ですので、初期値として「0」が設定されています。
事前に値が必要なものとしては「LastRow01」と「LastRow02」となりますので、この2つの変数の値を取得しましょう。
最終行の取得は「Cells(Rows.Count,列).End(xlUp).Row」でしたね。
LastRow01=Cells(Rows.Count,4).End(xlUp).Row ←D列の最終行
LastRow02=Cells(Rows.Count,1).End(xlUp).Row ←A列の最終行
これでOKです。
Public Sub 表入力()
Dim i as Long, j as Long, LastRow01 as Long, LastRow02 as Long, Ck_Count as Long
LastRow01=Cells(Rows.Count,4).End(xlUp).Row
LastRow02=Cells(Rows.Count,1).End(xlUp).Row
End Sub
では、正しく最終行が取得されたかをメッセージに表示してみましょう。
LastRow02の後に
MsgBox "D列の最終行は" & LastRow01 & vbNewLine & "A列の最終行は" & LastRow02 & "です。",vbInformation
と書いて、ファイルを保存してください。
では、マクロを実行してみましょう。
実行はメニューバーの「実行」をクリックし表示されたメニューの「Sub/ユーザーフォームの実行」を選択してください。メニューに緑の三角マークがある場合は、それをクリックすることでも実行できます。
表示されたメッセージと実際に入力した件数があっているか確認してください。
あっていれればOKです。

確認できたら、追加した「MsgBox~」を削除しておいてください。
長くなってきましたので、今回はここまでにしたいと思います。
これまでのまとめも含め、課題をクリアするためのマクロを作成していきましょう

まずは、課題にある表を作成しましょう。


上記の画面のように、処理を実施するための表を作成します。
A列に「北海道」から「沖縄県」を入力し、B列は空白にしてください。
D列には「群馬県」から「東京都」を入力し、E列は画面のとおりの日付を入力しましょう。
ここは、必ず課題と同じである必要はありません。好きなように入力してかまいません。
ここでは、課題画面に沿っての説明ですので、その点はご注意ください。
・・・・入力は終わりましたか?ファイル保存を忘れずに。
プログラムを作成するために「VBE画面」を開きましょう。
開き方については「エクセルマクロの基本から3」で説明していますので、
分からなくなった方は再度確認してくださいね。

上記の画面まで進みましたか?
次に、作成するマクロの名前をつけましょう。
VBE画面のツールバーの「挿入」をクリックします。表示されたメニューの「プロシージャ」を選択します。
下記のようなメニューが表示されますので、「名前」に「表入力」と入力し、”OK”を押して下さい。
他は変更しなくて大丈夫です。

VBE画面の「Option Explicit」の下に
Publick Sub 表入力()
End Sub
と表示されましたか?
表示されたら準備OKです

では、プログラムを書いていきましょう。
一つ約束してください。
プログラム文は必ず自らタイピングしてください。コピペでは覚えることができません。たくさん書くことが大事です!
変数の宣言ますは、プログラムで使用する変数を決めて、宣言しましょう。
変数・・?宣言・・・?

となった方は「エクセルマクロの基本から1」「エクセルマクロの基本から2」を確認してくだい!
今回必要な変数を決めていきましょう!
と言いつつ最初からすべての変数を決ることは実際難しいです。プログラムを作成していくうちに必要になったり、結局使わなかったりと・・・・。
足りなくなったら後で設定すれば良いので、作成時に必要だと思う変数を設定しましょう。
今回は変数の使いまわしは行いません。面倒ですので。
慣れてくると使いまわしをして変数を少なくしていきましょう。
では・・・・。
必要な構文をこれまで勉強してきました。その構文単位で必要な変数を考えていきましょう。
使う構文は「For~Next」「If~then~End If」でした。
「For~Next」は、データを順番に処理してく構文でした。その際、一つずつ増やしてく変数が必要でした。それを入れ子でつかいますので、2つ必要ですね。
一つ目を「ⅰ」二つ目を「j」としましょう。(ご自身の好きな文字を変数にしてもOKです。)
その次はどこまで処理をするのか「最終行」を取得する必要がありましたね。
なので、その変数を「LastRow01」「LastRow02」としましょう。
次はと・・・。「If~End If」では、データがすべて処理されたかをカウントする変数が必要でした。
これは、「Ck_Count」としましょう。
ひとまずこれでよさそうなので、変数宣言部分を書いていきましょう!
VBE画面の「Public Sub 表入力()」と「End Sub」の間に変数宣言を書いていきます。
Public Sub 表入力()
Dim i as Long, j as Long, LastRow01 as Long, LastRow02 as Long, Ck_Count as Long
End Sub
これで変数宣言は終了です!!
本文の作成(最終行の取得と確認)プログラムは書いた上から順番に処理されています。
なので、変数は処理時に必要な「値」を取得しておかなければなりません。
プログラムを書く際は、「上から順番に処理される」「変数は必要となる前に値を取得する」
この2点に注意が必要です!
今回使用している変数はすべて数値型ですので、初期値として「0」が設定されています。
事前に値が必要なものとしては「LastRow01」と「LastRow02」となりますので、この2つの変数の値を取得しましょう。
最終行の取得は「Cells(Rows.Count,列).End(xlUp).Row」でしたね。
LastRow01=Cells(Rows.Count,4).End(xlUp).Row ←D列の最終行
LastRow02=Cells(Rows.Count,1).End(xlUp).Row ←A列の最終行
これでOKです。
Public Sub 表入力()
Dim i as Long, j as Long, LastRow01 as Long, LastRow02 as Long, Ck_Count as Long
LastRow01=Cells(Rows.Count,4).End(xlUp).Row
LastRow02=Cells(Rows.Count,1).End(xlUp).Row
End Sub
では、正しく最終行が取得されたかをメッセージに表示してみましょう。
LastRow02の後に
MsgBox "D列の最終行は" & LastRow01 & vbNewLine & "A列の最終行は" & LastRow02 & "です。",vbInformation
と書いて、ファイルを保存してください。
では、マクロを実行してみましょう。
実行はメニューバーの「実行」をクリックし表示されたメニューの「Sub/ユーザーフォームの実行」を選択してください。メニューに緑の三角マークがある場合は、それをクリックすることでも実行できます。
表示されたメッセージと実際に入力した件数があっているか確認してください。
あっていれればOKです。

確認できたら、追加した「MsgBox~」を削除しておいてください。
長くなってきましたので、今回はここまでにしたいと思います。