● Excelでプログラムを理解する
≪山本≫
さぁ、皆さんが見ているプログラムはこんなものですよね。
(1) Sub HyouSakusei() (2)
Dim MotoData_End As Long (3)
Dim CoyeGyou As Long (4)
MotoData_End =
Worksheets("sheet1").Cells.SpecialCells(xlLastCell).Row (5)
CoyeGyou = 2 (6)
For gyou = 1 To MotoData_End Step 4 (7) Cells(CoyeGyou, 8) = Cells(gyou, 2).Value (8) Cells(CoyeGyou, 9) = Cells(gyou + 1, 2).Value (9) Cells(CoyeGyou, 10) = Cells(gyou + 2, 2).Value (10) Cells(CoyeGyou, 11) = Cells(gyou + 3, 2).Value (11)
CoyeGyou = CoyeGyou + 1 (12)
Next gyou (13) End Sub |
|
≪綾小路≫
そんな感じでゆっくり解説してちょんまげ・・・
≪山本≫
(2) MotoData_Endという名前の長整数型(数値で32ビット)の変数と呼ばれる記憶領域を作ります、という意味。後に複写元データの一番下の行番号を記憶させます。
(3) やはりCoyeGyouという名前の記憶領域を作ります、という意味。後に複写先のデータを貼付ける行番号を記憶させます。
(4) MotoData_Endに複写元データの一番下の行番号を記憶させるプログラムです。
(5) セルH1〜K1は青色で各項目名が入力されていますから、コピー貼り付けするのは2行目からよ、という意味でCoyeGyouに最初に2を記憶させています。
(6)〜(11) 複写元データの行番号1〜一番下の行番号まで処理を繰り返します、という意味です。Step 4は1回反復するごとに4づつ増やすということです。
ここで、元データを見て下さい。一人につきデータは4行使っています。つまり4づつ増やすと、1、5、9、13・・・つまりそれぞれの名前の行になることが判るでしょう。
この様な繰り返し処理をループと呼んでいます。
セル番地の指定をする際に Cells(行番号,列番号) という表現をしています。つまりセルA1ならCells(1,1)、A2ならCells(2,1)、B1ならCells(1,2)ということになります。
(7)〜(10) のCells(x,x) = Cells(y,y).Valueという記述は、Cells(y,y)のセルに入っている値をCells(x,x)のセルに複写しますという記述です。
繰返し構文 For〜nextでは繰返し処理がされます。
その際に、gyouとCopyGyouは値が変わっていきます。
1回目のループ処理では、gyou=1、CoyeGyou=2 ですから、(7)〜(10)の処理は、次のようになります。
Cells(2, 8) = Cells(1, 2).Value ・・・・・ セルB1の値をセルH2に複写する。
Cells(2, 9) = Cells(2, 2).Value ・・・・・ セルB2の値をセルI2に複写する。
Cells(2, 10) = Cells(3, 2).Value ・・・・ セルB3の値をセルJ2に複写する。
Cells(2, 11) = Cells(4, 2).Value ・・・・ セルB4の値をセルK2に複写する。
その後 (11)の記述 CoyeGyou = CoyeGyou + 1 は、既にCoyeGyouに代入されている2に1足した3を新たにCoyeGyouに代入するということです。
2回目のループ処理では、gyou=5、CoyeGyou=3 となっています。そこで(7)〜(10)の処理は、次のようになります。
Cells(3, 8) = Cells(5, 2).Value ・・・・・ セルB5の値をセルH3に複写する。
Cells(3, 9) = Cells(6, 2).Value ・・・・・ セルB6の値をセルI3に複写する。
Cells(3, 10) = Cells(7, 2).Value ・・・・ セルB7の値をセルJ3に複写する。
Cells(3, 11) = Cells(8, 2).Value ・・・・ セルB8の値をセルK3に複写する。
その後 (11)の記述 CoyeGyou = CoyeGyou + 1 は、既にCoyeGyouに代入されている3に1足した4を新たにCoyeGyouに代入します。
3回目のループ処理では、gyou=9、CoyeGyou=4 となっています。そこで(7)〜(10)の処理は、・・・今度はご自分で考えてみて下さい。
いかがですか、Webプログラミングではありませんが、プログラムとはこういう様に記述して、コンピュータにその手順通り実行させるのです。
さて今度は、このExcelマクロでホームページを作ってみます。
|