アクセスアップ講座
TOPページへ移動
初心者の為のホームページアクセスアップ講座
前ページへ No 51 次ページへ

● Excelでプログラムを理解する

(注) このマクロはExcel2000で作成しました。Excel2007での動作確認はしていません。

≪山本≫
さぁ、皆さんが見ているプログラムはこんなものですよね。
(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


≪綾小路≫
なんか英語だよ英語・・・
へんな数字や足し算の計算も書いてあるよ。

≪山本≫
まぁ、はじめてみるとギャッ!って思います。
慣れですよ慣れ。

難解そうですけど、たった13行のプログラムで
さっきのような表1万人分を一瞬に作れるわけですから、それはそれで価値があるでしょう。

≪綾小路≫
まぁ、そういわれればそうだが、1万人分のデータをコピー・貼付けするのも大変だけど、
これを理解するのも大変そうだな。

≪山本≫
1行1行じっくり見ていけば、そんなに難解なものじゃないです。
まず、1行目のSub HyouSakusei() と13行目のEnd Sub これは対になっていて、1行目から13行目までがひとつのプログラムですよ。
そして、そのプログラム名はHyouSakuseiつまり、表作成プログラムです。といっているのです。

≪綾小路≫
そんな感じでゆっくり解説してちょんまげ・・・

≪山本≫
(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マクロでホームページを作ってみます。

おすすめ、お得なホスティングサービス

さくらのレンタルサーバ
独自ドメイン取得とレンタルサーバーで年間たったの3,300円とランニングコスト超安

WADAXレンタルサーバー
低価格で、CGIやデータベース、SSLなど充実の内容のホスティングサービス。フリーダイアルでの対応が、初心者にはうれしい。

ロリポップ!
初心者の為のアクセスアップ講座の筆者も使用しているレンタルサーバー。個人向けとしては安定度、シェアともにトップレベル。
85種類のドメインを選択できる。


前ページへ No 51 次ページへ
サイト提供:検索ネットショップ


お得ネットショップ検索エンジン フリーで無料のマルチ検索窓 一括依頼!相互リンク倶楽部 地域の情報検索ナビ








本サイトマスターの新Webアプリケーションサービス かんたん作成!テスト・クイズ・アンケート