情報基礎A 第10週
プログラミング入門
VBA基本文法４
EXCEL データ利用

徳山 豪・全 眞嬉東北大学情報科学研究科
システム情報科学専攻
情報システム評価学分野
1

配列（１次元、２次元）
整数配列
x(9)

整数配列
y(9)

整数配列
z(9)

x(0)

y(0)

x(1)

整数２次元配列a(9,2)
x(9)

y(9)

z(9)

z(0)

x(0)
a(0,0)y(0)a(0,1)a(0,2)
z(0)

y(1)

z(1)

x(1)
a(1,0)y(1)a(1,1)a(1,2)
z(1)

x(2)

y(2)

z(2)

x(2)
a(2,0)y(2)a(2,1)a(2,2)
z(2)

x(3)

y(3)

z(3)

x(3)
a(3,0)y(3)a(3,1)z(3)a(3,2)

x(4)

y(4)

z(4)

x(4)
a(4,0)y(4)a(4,1)z(4)a(4,2)

x(5)

y(5)

z(5)

x(5)
a(5,0)y(5)a(5,1)z(5)a(5,2)

x(6)

y(6)

z(6)

x(6)
a(6,0)y(6)a(6,1)z(6)a(6,2)

x(7)

y(7)

z(7)

x(7)
a(7,0)y(7)a(7,1)z(7)a(7,2)

x(8)

y(8)

z(8)

x(8)
a(8,0)y(8)a(8,1)z(8)a(8,2)

x(9)

y(9)

z(9)

x(9)
a(9,0)y(9)a(9,1)z(9)a(9,2)

2次元配列（一般的な方法）
配列名（行のインデックスの最大値, 列のインデックスの最大値）
a(0,0)a(0,1)a(0,2)a(1,0)a(1,1)a(1,2)a(2,0)a(2,1)a(2,2)a(3,0)a(3,1)a(3,2)

a(4,0)

a(4,1)a(4,2)a(5,0)a(5,1)a(5,2)

a(6,0)

a(6,1)

a(6,2)a(7,0)a(7,1)a(7,2)a(8,0)

a(8,1)a(8,2)a(9,0)a(9,1)a(9,2)

10行 3列の ２次元配列
配列の名前 a箱の数(10×3=30個)

a(9,2):名前がaの整数型の箱を30個用意

Dim a (9,2) As Integer
配列名

インデックス番号の最大値

データ型

32次元配列（インデックス番号指定）
配列名（行のインデックス番号指定, 列のインデックス番号指定）
a(1,1)a(1,2)a(1,3)a(2,1)a(2,2)a(2,3)a(3,1)a(3,2)a(3,3)

a(4,1)a(4,2)a(4,3)a(5,1)a(5,2)a(5,3)

a(6,1)

a(6,2)a(6,3)a(7,1)a(7,2)a(7,3)

a(8,1)a(8,2)a(8,3)a(9,1)a(9,2)a(9,3)a(10,1)a(10,2)a(10,3)

10行 3列の ２次元配列
配列の名前 a箱の数(10×3=30個)

Dim a (1 to 10, 1 to 3) As Integer
配列名

インデックス指定

データ型

4エクセルデータ利用
cells（行のインデックス, 列のインデックス）
A1

B1C1cells(1,1)

cells(1,2)

cells(1,3)

A2

B2C2cells(2,1)

cells(2,2)

cells(2,3)

A3B3C3cells(3,1)

cells(3,2)

cells(3,3)

A4B4C4cells(4,1)

cells(4,2)

cells(4,3)

A5B5C5cells(5,1)

cells(5,2)

cells(5,3)

A6

B6C6cells(6,1)

cells(6,2)

cells(6,3)

A7

B7C7cells(7,1)

cells(7,2)

cells(7,3)

A8B8C8cells(8,1)

cells(8,2)

cells(8,3)

A9

B9C9cells(9,1)

cells(9,2)

cells(9,3)

A10B10C10cells(10,1)

cells(10,2)

cells(10,3)

エクセルのセルの行と列の番号は１から始まる

5

エクセル上のセル書式
セル番号：C2
VBAではRange(“C2”)
又はCells(2,3)
Range (“列番号行番号”)

Cells(行番号,列番号)6プロシージャ 「Sub」から「EndSub」までのコードの集まりが１つのプロシージャ（マクロ）Sub exercise1()
ThisWorkbook.Worksheets("Sheet1").Range("A:A").Value = 1
End Sub

Sub exercise2()
ThisWorkbook.Worksheets("Sheet1").Range("A:A").Interior.ColorIndex = 4
End Sub

Sub exercise3()
ThisWorkbook.Worksheets("Sheet1").Range("A:A"). Delete
End Sub7

オブジェクト 「もの」「対象」の意味。VBAでは操作対象となるものをオブジェクトと呼ぶ。
このブックの ワークシート「Sheet1」の セルの範囲A列

ThisWorkbook . Worksheets("Sheet1") . Range("A:A") . Interior.ColorIndex = 4
ThisWorkbook . Worksheets("Sheet1") . Ｋ
Range("A:A") . Delete
ThisWorkbook . Worksheets("Sheet1") . Range("A:A") . Value = 1

オブジェクトオブジェクト動詞を結ぶピリオド8

メソッド オブジェクトが操作する「Delete」「Open」などの言葉をまとめてメソッドと呼ぶ

このブックの ワークシート「Sheet1」の セルの範囲A列 を 削除する

ThisWorkbook . Worksheets("Sheet1") . Ｋ
Range("A:A") . Delete

メソッド
オブジェクトとメソッド結ぶピリオド
9プロパティ
 「属性」の意味。オブジェクトの後ろにつなげてオブジェクトの外観を設定

このブックのワークシート「Sheet1」のセルの範囲A列の塗りつぶしを（色）設定する

赤ThisWorkbook . Worksheets(“Sheet1”) .ＫRange(“A:A”) . Interior . ColorIndex = 3

代入

メソッド
オブジェクトとプロパティを結ぶピリオド
10

セルの参照方法
 セルの参照方法
 Range Cells セルA1の値10に設定
 以下はまったく同じ動作をする

Sub Example_Range1()
ActiveSheet.Range(“A1”).Value = 10
End Sub

Sub Examlpe_Cells1()
ActiveSheet.Cells(1, 1).Value = 10
End Sub
11

RANGEプロパティ
 任意の1つのセル，又はセルの範囲を参照するプロパティ
 値の読み出し 設定などを行う

Range(“セル”)

Sub Example_Range2()‘セルに値を入れる
ActiveSheet.Range(“A1”).Value = 15
ActiveSheet.Range(“A2”).Value = 5
ActiveSheet.Range(“B1:B10”).Value=10
End Sub
12

CELLSプロパティ
 単体セルを参照する

Cells(RowIndex,ColIndex)

Sub Example_Cells2()‘セルに値を入れる
ActiveSheet.Cells(1,5).Value = 25
ActiveSheet.Cells(2,5).Value = 5
End Sub
13

CELLSプロパティ
 セルF1～F100にセルの行番号を書き込むプログラム
 プロパティ「.value」を省略

Sub Example_Cells3()‘セルF1～F100にセルの行番号を書き込むプログラム

Dim i As Integer
For i = 1 to 100
Cells( i , 6 ) = i
Next iEnd Sub
14

セルA1とA2の合計
 Rangeを使ってセルA1とA2の合計をA3に出力

Sub Example_Range3()
Range(“A3”) = Range(“A1”)+ Range(“A2”)End Sub
 Cellsを使ってセルA1とA2の合計をA4に出力

Sub Example_Cells4()
Cells(4,1) = Cells(1,1) + Cells(2,1)
End Sub15

セルB1からB10までの合計
 Rangeを使ってB1からB10までの合計をB11に出力

Sub Example_Range4()
Range(“B11”) = Range(“B1”) + Range(“B2”)+ Range(“B3”) + Range(“B4”) + Range(“B5”)+ Range(“B6”) + Range(“B7”) + Range(“B8”)+ Range(“B9”) + Range(“B10”)
End Sub16

セルB1からB10までの合計
 Cellsを使ってB1からB10までの合計をB11に出力

Sub Example_Cells5()
Dim i As Integer
Dim goukei1 As Integer
goukei1=0
For i = 1 to 10
goukei1 = goukei1 + Cells(i, 2)
Next iCells( i , 2) = goukei1End Sub17