PowerPoint プレゼンテーション

バイオインフォマティクスを専門
としない生物学研究者のための
プログラミング入門
飯野雄一
1
これからの生物学者は
コンピュータによる解析や
プログラミングができた方が絶対有利。
本格的なプログラムでなくとも、いろんなソフト
に付随しているマクロを使えるようになれば、
繰り返し操作などが自動化できる。
・・・ 手で何回も同じようなキー操作を打ち込
むのはカッコよくない!
さらに、ソフトにもともと用意されていない処理
を自分のニーズに合わせて作ることができる。
「でもすぐにはなかなか、、、、」
↓
1)プログラミングの考え方がわかれば
よい。
2)日頃からちょくちょく短いプログラムを
書くようにする。
→だんだん慣れる。
→いざやりたいことができたら勉強すれ
ばできると思えるところまで慣れる。
なぜ、この演習でまずExcelか?
Excelはデータ処理の最も定番のソフト。
関数による統計計算もできる上、ちゃ
んとしたプログラム言語(VBA)が備
わっている。
→上達すればレポート作成に有利。
→日常使うExcelで気軽にプログラムが
書けると大幅なパワーアップになる!
 Excelの表形式での視覚的なデータ表
示はプログラミングを覚えるのに最適。4

なぜ、この演習でまずExcelか?
プログラム言語はどれも似たようなも
の:英語とドイツ語のような関係。
☆ただし、どの読者も恐ろしく文法に
うるさい。---結局機械は石頭。
 その意味でもVBAはよい。
ヘルプもデバッグ機能もあるので。
しかもGUI(グラフィックユーザーイン
ターフェース)が標準装備。

5
一旦覚えればあとはなんとでもなる
本を買うのもよし
Excel VBAなどという本は山のよう
に出ている。
 分からないことがあったらネットで
検索。→山ほど答えが書いてある。
 他のプログラム言語も似たような
ものなので覚えるのは難しくない。

6
Excelの基本
7
Excelの基本的使い方




表形式にデータを並べて処理。
左端あるいは上端の番号、記号をクリックする
と行や列全体が選択される。選択しておいて
「編集」/「削除」とやると行、列が削除される。
逆に「挿入」/「行」で一行挿入。
「書式」/「行」の「表示しない」でその行を表示
しないようにすることも可。
グラフにしたい部分を四角く囲って上のグラフ
ウィザードアイコンをクリックする。→グラフの
種類を選んで「次へ」→「行」または「列」を選ん
で正しいグラフにして「完了」。
8
Excelの基本的使い方

コピーの仕方
1)一つのセルを選択してコピー、別のセルを選
んでペースト。
2)連続したセルへのコピーは、セルを選択し、
右下端を持ってずりっと引きずる。どっち方向
へも可。
☆この際、数字は自動的に1ずつ増える場合
がある。これをやめる(または強制的にやらせ
る)ためにはoptionを押しながら引きずる。
------ あとで使うので練習してみよう。
9
Excelの基本的使い方

コピーの仕方
ものすごく下まで同じものをコピーして埋めたい
とき:
1) コピーするもとのセルをクリック
2) コピーしたい領域の一番下のセルをシフトを
押しながらクリック(逆順でもよい)。
3) 「編集」/「フィル」/「下方向へコピー」
10
"A Genome-Wide Transcriptional Analysis of the Mitotic Cell Cycle"
11
マイクロアレイ解析
0分
10分
20分
・ ・ ・ ・ ・ ・
160分
mRNA抽出 mRNA抽出 mRNA抽出
蛍光ラベル 蛍光ラベル 蛍光ラベル
・・・・・・・・・
ハイブリダイ ハイブリダイ ハイブリダイ 遺伝子1
遺伝子2
ゼーション ゼーション ゼーション
遺伝子3
・
・
・
12
テキスト形式のデータ

数値データを扱う際のテキスト形式のファイルの
種類(万国共通)
空白区切り
タブ区切り
カンマ区切り
固定長データ
gene1 10 20 30
gene2 120 140 160
gene1 10
20 30
gene2 120 140 160
gene1,10,20,30
gene2,120,140,160
gene1 10 20 30
gene2 120 140 160
13
テキストデータの読み込み




Excel画面から、「ファイル」/「開く」を選択。
または「開く」アイコンをクリック。
選択対象を「すべての読み込み可能なファイ
ル」として、 開きたいテキストファイルを指定。
テキストファイルウィザードが開くので、「カン
マやタブなどの区切り文字によってフィールド
ごとに区切られたデータ」をチェック、「次へ」。
区切り文字のうち「スペース」をチェックして
「完了」。
14
データの並べ替え(ソート)

表形式のデータを行単位で入れ替え、特定の列の数字
を指標に昇順(上から下へ数字の小さい順)または降順
(上から下へ数字の大きい順)に並べ変える。
1) 並べ変えたいデータ全体を選択。ワークシート全体
で構わない場合は「コマンド‐A」キー。
2) 「データ」/「並べ替え」並べ替えウィンドウが開く。
3) 選択範囲の一番上の行がタイトル行(入れ替えの対
象にならない)であれば「範囲の先頭行」を「タイトル行」
とする。そうでなければ「データ」とする。
3) 指標とする列を選択。一番上の行がタイトル行であ
れば列のタイトルで選ぶ。そうでなければA行、B行、…
から選ぶ。「OK」で並べ替えが実行される。
15
関数
16
Excelの使い方のポイント



複数のセルの値から関数により計算して
答えを別のセルに入れる。
式の入ったセルを別のセルにコピーする
と、数字(値)がコピーされるわけではなく
式だけがコピーされるので、縦一列、横一
列などについて同じ計算をさせることがで
きる。
関数で処理しきれないときには適宜VBA
プログラミング言語によるマクロを使う。
17
Excelの関数


方法1)
結果を書き込みたいセルを選択し、
「=AVERAGE(A2:R2)」などと書き込む。このとき、セルの
名前"A2:R2"を入力するかわりに該当するセル範囲をド
ラッグで選択(またはセルをクリック)してもよい。そのあと
に")"を手入力するのを忘れずに。入力後は必ずEnterを
入力してボックスから出ておく。
方法1’)セルを選択してから数式バーに書き込んでもい
い。
方法2)
結果を書き込みたいセルを選択し、fxをクリック。
関数の一覧が表示されるので、必要な関数を選ぶと、関
数ウィザードが起動。これに従って必要な入力を行う。
18
Excel関数の調べ方


前記方法2)。関数の種類ごとに分類されてい
るので、これかなと思った関数について、「ク
リックすると選択した関数のヘルプが表示され
ます」をクリックすると説明が現れる。
「ヘルプ」/「Excelヘルプ」をクリック、ボックス
に質問の文章を入れると関連のある説明を検
索してくれる。
19
Excelの関数の例(統計関数)




SUM(A2:R2) A2セルからR2セルまでの合計
AVERAGE(A2:R2) A2セルからR2セルまでの
平均
COUNT(A2:R2) A2セルからR2セルまでのう
ち数字のはいったセルの数
STDEV(A2:R2) A2セルからR2セルまでの標
準偏差
20
Excelの演算子
+ :足す
 - :引く
 * :掛ける
 / :割る
 ^ :累乗
 MOD(A1,A2) :A1をA2で割ったあまり(関数)
 ABS(A1) :A1の絶対値(関数)
 SQRT(A1) :A1の平方根(関数)
 " " :文字列を指定。例:A2はセルの名前。 "A2"は
A2という文字列。
 & :文字列の連結
("ABC" & "DEF" は "ABCDEF"になる)
[例] A2 & “DEF” と “A2” & “DEF”の違いは?

21
関数をコピーしたとき参照はどうなる?




AVERAGE(A2:R2) を下にコピーしてみましょう。
A2:R2の部分はどうなるでしょうか?
では右にコピーしたら?
このように、デフォルトでは相対的な位置関係
を保つようになっています(相対参照)。
絶対参照にさせるためには、$をつけます。行
だけまたは列だけに$をつけることもできます。
AVERAGE($A2:$R2)、AVERAGE(A$2:R$2) 、
AVERAGE($A$2:$R$2) と書き換えて、下と右
22
にコピーしてみましょう。
Excelの関数の例(文字操作)





LEN(A1) A1セルに書かれた文字列の文字数。
FIND("t",A1) A1セルの文字列の中で、左か
ら探してtが何番目に来るか。tがないときはエ
ラー値となる。
LEFT(A1,5) A1セルの文字列の左から5文字
をとる。
RIGHT(A1,7) A1セルの文字列の右から7文
字をとる。
MID(A1, 5, 3) A1セルの文字列の5文字目か
ら3文字をとる。
23
Excelの関数の例(その他)




IF(A1=0,"Yes","No") A1=0が正しければ(式の結果
がTrueであれば)"Yes"、正しくなければ"No"が表示さ
れる。
ISERROR(A1) A1セルの内容がエラーであればTrue。
TTEST(A2:R2,A3:R3,1,2) T検定。A2~R2のデータと
A3~R3のデータの平均の差異を検定しP値を表示。
HYPERLINK("http://yahoo.co.jp","Yahoo")クリックす
るとブラウザでhttp://yahoo.co.jpにアクセスする。セル
の表示はYahooとなる。

注:ハイパーリンクの設定されているセルを選択しようとしてク
リックすると、ブラウザが開いてしまう。単にセルを選びたいだ
けなら、隣のセルを選んだ後に矢印で移動するか、複数のセ
24
ルを選択する。
VBAマクロ
25
Excel VBAマクロについて





VBA = "Visual Basic for Applications"
プログラム言語 VB (Visual Basic)をマイクロソフト
のアプリケーション用にしたもの。
VBA for Excel, VBA for Word, VBA for
PowerPointなどがある。
いずれもアプリケーションに付属でついている。(単
なるVisual Basicは別個に販売されている。)
いずれも言語体系はVBと同じ。何に使うかが違う
分、対象に関する記述の部分が違っている(後述)。
ということで、本日はVBA for Excelを使う。Excel機
能に依存しない(VBとしての)使い方もできる。
26
プログラムを書いて走らせるということ

最初に認識しておいてください
<プログラムを書いて一発で動く人はいない>
たいてい、どこかに間違いがあって正しく動き
ません。動かないだけならいいが、暴走してウ
ンともスンとも言わなくなることしきり。=いわゆ
るフリーズ。これまでは人のせいだったがこれ
からは自分のせい。
↓
防衛策:プログラムを走らせる前には必ず苦労
して書いたファイルを保存することをお勧めしま
す。
27
VBA Editorの使い方

プロジェクトウィンドウ



現在開いているワークブックの構成が表示されている。
ワークブック全体はVBAプロジェクトと呼ばれ、各ワー
クシートとModule、Formなどからなる。ダブルクリック
するとそれぞれのコンポーネントに付随したマクロ
(ソースコード)が表示される。
メインウィンドウ

ここにVBAプログラム(「コード」)が表示される。現在表
示されているものが何であるかは、ウィンドウの一番
上のバーに表示されている。表示内容の切り替えはコ
マンドバーの「ウィンドウ」から行う。
28
表の画面と裏の画面の行き来


VBAエディタでからExcel画面に行くには
1)左上のエクセルアイコンをクリック
2)Fn-F9またはFn-F10を使って全ウィンドウを拡げる
3) 「表示」/「Microsoft Excel」
4)コマンドバーの「Excel」/「終了してMicrosoft Excel
に戻る」。この場合はVBA画面は閉じられる。
Excel画面からVBA画面に行くには
1) Visual BasicツールバーのVisual Basic Editorアイ
コンをクリック。Visual Basicツールバーは「表示」/
「ツールバー」/「Visual Basic」で表示させておくこと。
2) 「ツール」/「マクロ」/「Visual Basic Editor」
29
プロシジャー

Sub Macro1()
End Sub
の間が1つのプロシジャー(一度に実行される命令
群)になる。これは正確にはSubプロシジャー(サブ
ルーチン)である。このプロシジャーが受け取る値が
あるときには、それが()内に書かれる。
これ以外にFunctionプロシジャー(値を返すプロシ
ジャー)、イベントプロシジャー(マウスクリック等、何か
の事象が起こったときに実行されるプロシジャー)など
がある。
30
マクロの実行とデバッグ(1)

マクロの実行は以下のいずれかの方法による。

VBA Editor画面から



Excel画面から



を押して起動。
カーソルがある位置のマクロが走る。
「実行」/「マクロの実行」またはFn-F5 。
「ツール」/「マクロ」/「マクロ」/「マクロを選んで実行」。
実行するマクロの選択画面が出るので走らせたいマクロを選
択。
「Visual Basic」ツールバー上の を押して起動。あとは同じ。
暴走してどうにもならないとき
 画面下のDockのExcelアイコン上で右クリック、「強制終
了」。

(参考:Windowsの場合)Ctrl-Alt-Delから実行中のエクセル31
ファイルを選び「タスクの終了」
マクロの実行とデバッグ(2)

ファイルを開くとき
マクロプログラムを持つExcelファイルを一
旦保存して再度開こうとすると、「開こうとし
ているブックにはマクロが含まれています」
などの警告が出る。これに対して「マクロを
有効にする」をクリックしてファイルを開く。
 ちなみにWindows版Excel2007を使う人は、
マクロを含むファイルは.xlsx形式では保存
できません。.xlsm形式にします。

32
Excelファイルの呼称




Excelの1つのファイルを「ワークブック」と呼ぶ。
下に出っ張っているタブで選択できる1ページ
ずつを「ワークシート」と呼ぶ。
つまり、ワークブックは1つあるいは複数の
ワークシートよりなる。それぞれのワークシート
には名前がついている(タブに記載)。
ワークシート上のひとつひとつのます目のこと
を「セル」と呼ぶ。セルには数字や式が書かれ
ている。
33
セルの参照(1)


例えば第2行第3列のセルであれば、Cells(2,3)。
(参考) Range("C2")の表現も可能だがあまり実用
性はない。列行の順番が逆なので注意。
セル範囲の参照の場合(例えば左上の2行3列)は
Range(Cells(1,1),Cells(2,3))
Range("A1:C2")などを使う。
34
セルの参照(2)



前頁の内容は正確には
Worksheets(“data”).Cells(2,3)
(およびWorksheets(“data”).Range(“C2”) )
の表記が正しい。WorkSheetを指定しない場合は、現在ア
クティブなワークシート上のセル
(=ActiveSheet.Cells(2,3))を意味することになる。
通常はプログラム実行前に見ていたシートがアクティブ
シートである。
別のシートをアクティブにする方法
WorkSheets("data2").Activate
但し、頻繁に異なるシートをActivateすると、ちらちらしてプ
ログラムの実行も遅くなるので注意。
35
セルの値とプロパティ


ワークシート上の特定のセルに表示されている値のこ
とを、
Cells(2,3).Value
などと表記する。これも「WorkSheets().」を省略した形
である。さらに、「.Value」は省略可。つまり
Cells(2,3)
と書くとアクティブシートの第2行第3列のセルの値を意
味する。
それ以外にも、セルはいろいろな属性(プロパティ)を
持っている。
Cells(2,3).Height
高さ
Cells(2,3).Font
フォント
Cells(2,3).Borders 周りの罫線(の色、太さなど)
Cells(2,3).Interior 内部(塗り)
36
セルの操作


セルの値を使った計算の例
Cells(1,20) = Cells(1,1) / Cells(1,19)
セルの選択
Cells(1,1).Select
Selection.Value = 5
Cells(2,1).Select
Selection.Value = "Gene"
37
列番号対応表
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
S
T
U
V
W
X
Y
Z
AA
AB
AC
AD
AE
AF
AG
AH
AI
AJ
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
AK
AL
AM
AN
AO
AP
AQ
AR
AS
AT
AU
AV
AW
AX
AY
AZ
BA
BB
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
BC
BD
BE
BF
BG
BH
BI
BJ
BK
BL
BM
BN
BO
BP
BQ
BR
BS
BT
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
38
変数



変数
自由に値を代入して使えるもの。実態はコンピュータのメモリである。
例:
A = 1 ---- Aというメモリ領域に1という数字を入れる(=代入する)
B=2
”=”は右辺の値を左辺の変数に代入しろという意味。
C = A + B --- Aと書くと変数Aの値、つまりメモリの内容を読み出す
A=3
ことを意味する。変数AとBの内容を足してCに代入。
D=A+B
MsgBox D ----- Dの内容を表示する。
以上の一連の命令を実行すると、Aの値は3、Bの値は2、Cの値は
3、Dの値は5になる。
変数名には英字と数字が使える。但し先頭は数字であってはいけな
い。半角255文字以内。漢字も使える!
配列も使える。配列とは変数が番号付きで並んでいるようなもの。
A(2) = A(1) + 1
A(2,2) = B(2,2) + 1 など。
39
宣言文(1)

変数を使うためには、使う前に変数の型の宣言をする
必要がある。
例:Dim A As Integer
("A" を整数として定義する。)







Integer:整数(-32768~32768)
Long:長整数(-2147483648~ 2147483648 )
Single:単精度実数(有効数字約7桁)
Double:倍精度実数(有効数字約15桁)
String:文字列型変数
Boolean:論理変数。TrueとFalseのいずれかの値をとる。
Object:オブジェクト変数(ワークシート、セルなど何でも「物
(オブジェクト)」を代入できる。)
40
宣言文(2)


ただし、宣言しなくてもテキトーに処理される。
--- 正確にいうと、型宣言を省略するとVariant型の変数
となる(Variant型として明示的に宣言もできる)。この型
は格納されるデータに応じて変数の型を変化させるので
便利。
配列の宣言は要素の最大数を指定。
一次元配列: Dim A(100) As Integer
- A(1), A(2), A(3), .... A(100)の100個の変数が用意さ
れることと同じ。
二次元配列: Dim A(100,100) As Integer
- A(1,1) から A(100,100)までの10000個の変数を用意。
41
大文字と小文字



Visual Basicでは大文字と小文字は区別されない。つ
まりNameとnameは同じ意味であり別の名前としては
使えない。
しかし、便宜上しばしば大文字小文字交じりの変数名
を使う(例: NameString)。宣言文に変数名を大文字
小文字交じりで書いておくと、以降、小文字のみで入
力しても、 VBAエディターが自動的に大文字小文字交
じりになおしてくれる。大文字に直らないときはミスス
ペルの可能性がある。ミススペルのチェックに便利。
既定語(関数、制御文など)も通常大文字で始まる。こ
れもVBAエディタが自動的に直してくれる。さらに既定
語は自動的に青字になるので、書き方が間違ってい
ないかのチェックに便利。
42
演算子


以下のような計算式に使う。
代入
A=1
加算
A=B+1
減算
A=B-1
乗算
A=B*2
割算
A=B/3
べき乗 A = B ^ 2 (Bの2乗)
剰余
A = B mod 3 (Bを3で割ったあまり)
絶対値 A = Abs(B) (Bの絶対値)
文字列連結 A = B & “th data“ (&の両側は必ずス
ペースを空けること)
なお、オブジェクト変数にオブジェクトを代入する場合に限り、
Set A = Worksheets("data")
のように書く。これ以降、変数AはWorksheets("data")の意味
となる。
43
ループ




コンピュータプログラムは、書かれた命令を
一行ずつこなしていく。
しかし短い操作であれば手作業でもできる。
同じ作業を繰り返し(しかも正確に)行ってく
れるのがコンピュータの得意技。
それをさせるのがループです。
→これがコンピュータプログラムのキモなの
でよく習得してください。どういう順番で命令
が実行されるか、よく考えながらプログラム
44
を書いてください。
For文(ループ)(1)



N=0
For I = 1 To 10
N=N+I
Next I
MsgBox N
この例ではIを1から10まで1ずつ増やしながら「N=N+I」を何度も
実行する。つまり1から10までの和を計算。結果を表示する。
全体のプログラムの構造が分かりやすいように、ループの中はタ
ブ一個分、字下げをするとよい。
VBAエディターでは複数の行を選択し、タブキーを押すとまとめて
字下げされる。逆に字上げするときはシフト-タブ。
N=0
For I = 1 To 10 Step 2
N=N+I
Next I
Stepが指定されている場合、指定した数ずつIを増やしていく。つ
まり、この例ではI=1, I=3, I=5, I=7, I=9の順に実行される。
45
For文(ループ)(2)

二重ループ
N=0
For Row = 1 To 100
For Column = 1 To 10
N=N+1
Next Column
Next Row
For文を二重にする使い方もよく行われる。この例で
はRowを1から100まで順に増やすが、それぞれの
Rowについて、Columnを1から10まで順に増やしなが
ら実行する。つまりN=N+1は合計1000回実行される

必ずFor文とNext文の対応がついていることが必要で
ある。For Row...Next Rowの中にFor Column...Next
Columnがはいっていることに注意。
46
マクロの実行とデバッグ(3)




VBAエディタ画面で「デバッグ」/「ステップイン」(Fn-F8)とやると、
一行ずつ実行されるので実行順の確認ができる。 「デバッグ」/
「カーソル行の前まで実行」(Command-Fn-F8)ではカーソル位置
の前まで実行される。
途中、一時停止の状態での各変数の値が知りたいときは、「表示」
/「イミディエイトウィンドウ」でイミディエイトウィンドウを開く。ここ
に、「?A」などという形で知りたい変数を書いてリターンを押すと、
そのときの変数の値が表示される。ちなみに、このウィンドウには
どんな命令でも入力できる。その命令が直ちに実行される。
予めプログラムの中に「Debug.Print A, B」などと書いておけば、そ
の命令が実行されるとイミディエイトウィンドウに変数の値が書か
れる。
ブレークポイントを設定してから実行すると、ブレークポイントで止
まるので、そのときの変数等の状態を調べることができる。コード
画面の左側の枠をクリックするとその行にブレークポイントが設定
47
される。
マクロの実行とデバッグ(4)



プログラム実行時にエラーが起こったとき
表示されるウィンドウで「デバッグ」を選ぶとVBA画面が開
く(選択される)。黄色い矢印のところで問題が生じている。
イミディエイトウィンドウを使って変数の値を確認する。
■を選ぶとデバッグモードが終了する。これを忘れると次
が実行できない。
48
If文(1)



If I = 0 Then J = 1
Iが0のときのみJを1にする。
If I = 0 Then
J=1
End If
Iが0のときのみJを1にする。
If I = 0 Then
J=1
Else
J=2
End If
Iが0のときにはJを1に、それ以外のときはJを2にする。
49
If文(2)


If I = 0 Then
J=1
ElseIf I=1 then
J=2
Else
J=3
End If
Iが0のときにはJを1に、そうでなくIが1のときにはJを2
に、それ以外のときはJを3にする。
☆☆最初の表記(一行で書いてしまう形式)以外のIF
文ではすべて End If を忘れないように。☆☆
50
条件式

If文などに使う条件式の書式
A=0 (前出と同じ"="だがこの場合は代入の意味ではない)
A<>0 「Aが0でない」
Not A>3 「A>3でない」
A>5 And B=<5 「Aが5より大きくかつBが5以下」
A<3 Or A>6
「A<3またはA>6」
(A>5 And B=<5) Or (A<3 And B>5)
A (Aが論理型の場合) 「A=Trueかどうか」
など
51
Doループ



Do While <条件式>
<命令群>
Loop
条件式が満たされる間、ループを繰り返す。
Do
<命令群>
Loop While <条件式>
条件式が満たされる間、ループを繰り返す。
その他の制御文について、詳しくは、Visual Basicヘ
ルプの目次から「Visual Basic言語のヘルプ」の「ス
テートメント」の項参照。
52
ループからの離脱とジャンプ

以下は、途中でループを抜けたくなった場合に
使う。



プロシジャー(マクロ)を終了させるときは、


Exit Do
Exit For
Exit Sub
単にプログラム上の別の場所にジャンプしたい
ときは

GoTo Label1
飛び先はLabel1: とする(コロンがポイント)
「Label1」の部分はどのような名前でもよい。
53
MsgBox





メッセージを出力する関数。
実はユーザーの応答(OKをクリックしたことな
ど)が関数の値として返される。
MsgBox(“Hello!”)
これをコードに書き込んで実行してみる。
応答を受け取る書き方
MsgBox(“Is this OK?”, vbOKCancel)
OKが押されたらvbOK(=1), キャンセルが押さ
れたらvbCancel(=2)という値を返す。
54
コメント行などの書き方




コメント行は’で始める。コメント行はエディターが
自動的に緑にする。
行の途中から’で始まるコメントを書くことも可。
1行に書ききれないとき、長くなって見にくいとき、
最後に _ (下線)をつけると、その行は次の行に
続くという意味になる。
:(コロン)で複数の短い行をつないで1行に書くこ
ともできる。
1行入力が終ったときに文法的な明らかな誤りが
あると怒られるので修正する(書きかけの場合な
どは無視する)。
55
ヘルプの使い方



VBAエディタで、「Help」/「Visual Basicヘルプ」で
Microsoft Officeヘルプウィンドウが開くので質問ボッ
クスに知りたいことを入力、候補の中から選択してク
リック。
あるいは、 ヘルプウィンドウ上部の「目次」をクリックし
て右側のヘルプマップから「Visual Basic言語のヘル
プ」をクリックすると、データ型、演算子、ステートメント
(Sub, Dimなど)、関数(MsgBoxなど)などの説明をす
べて見ることができる。
Excelの画面でのヘルプとVBAの画面でのヘルプとは
内容が違うので注意。
56
VBAヘルプ
57
正規化
58
cell_cycle_microarray6.xls
(名前順の10遺伝子のパターン比較)
3
YPL256C/CLN2
YPL257W/
YPL258C/
YPL259C/APM1
YPL260W/
YPL261C/
YPL262W/FUM1
YPL263C/
YPL264C/
YPL265W/DIP5
2.5
2
1.5
1
0.5
0
0
20
40
60
80
100
120
140
160
59
ユークリッド距離
この距離を二乗して足した
もの(の平方根)がユーク
リッド距離
↓
パターンが近いほど小さく
なる。
60
マクロの自動記録


VBAの非常に優れた機能。
手入力で行った作業を自動的にマクロのコードに変換し
てくれる。







Excel画面から、「ツール」/「マクロ」/「新しいマクロの記録」
現れるウィンドウで、作成されるマクロの名前と、マクロの保存
先が「作業中のブック」となっていることを確認してOK.
記録したい作業を間違えないように行う。
終了したらVisual Basicツールバーの を押す。
VBAエディター画面で、作成されたマクロを確認。
しかし、必ずこのマクロが正しく動くわけではない。試し
に、作成されたマクロをすぐに実行してみるとよい。
あとは書かれたコードの意味を推定しつつ、必要に応じ
て書換えていく。
61
オブジェクト、プロパティ、メソッド




例えば「特定のセル(Range("A1"))」というオブジェクトについ
て、それが持ついろいろな属性をプロパティという。例え
ば.Value、 .Hight などはすべてプロパティ。
そのオブジェクトに対するいろいろな操作をメソッドという。
例えばRange("A1").Clearはセルの値を削除するというメソッド
である。
WorkSheets("data").Range("A1")は、WorkSheets ("data")
オブジェクトの持つひとつのプロパティである。つまり、何かの
オブジェクトのプロパティーがそれ自身オブジェクトであることも
多い。
従って、何々の何々の、、、と多段階に続く。例えば
WorkSheet("data").Range("A1").Font.Sizeなどとなる。
62
オブジェクト、プロパティ、メソッド



オブジェクトには種類がある。例えばCells(1,2)も
Range(A1:C2)もRangeオブジェクトという種類のオブジェクトで
ある。
オブジェクト間の関係を知るためには、Visual Basicヘルプの質
問のボックスに知りたい語を入れてみるとよい。オブジェクトの
説明が表示されると階層関係の図が出てくる。
同じ名前のプロパティでも対象により違う意味になる。例えば
Fontプロパティはワークシートのセルのフォントでもありうるし、
グラフのタイトルのフォントでもありうる。Xxx.FontのXxx部分
(対象)を特定することが大事。
63
Withの使い方


例えば、 WorkSheets("data").Cells(1,1).Value = _
WorkSheets("data").Cells(1,1).Value / _
WorkSheets("data").Cells(1,19).Value
など、頻繁に共通のオブジェクトを参照する場合に、省
略して書く方法。
上記と同じ内容は、
With WorkSheets("data")
.Cells(1,1).Value = .Cells(1,1).Value / .Cells(1,19).Value
End With
と書かれる。先頭の.がWorkSheets("data")の省略を示
す。End Withまでの間、Withの効力が及ぶ。
64
ユーザーインターフェース
65
コントロール

ユーザーインターフェースのためのボタン。
コマンドボタン:押すと設定されたマクロが実行さ
れる。
テキストボックス:テキストや数値を入力する。
チェックボタン:チェックをつけるかはずすかでき
る。
リストボックス:一連のリストから選ばせる。
ラベル:字を書くだけ。
66
ユーザーフォーム


コントロールを配置するための画面。この上に
各種入力ボタンや入力欄(コントロール)を配置
し、マクロの実行によってユーザーフォームを
表示する。
ユーザーフォームが表示された状態で、コント
ロールに入力を行うことができる。
67
ユーザーフォームの作成とコントロール
の配置(1)




VBAエディタ画面から「挿入」/「ユーザー
フォーム」でユーザーフォームが作成され、表
示される。同時にプロジェクトウィンドウでも
ユーザーフォームが追加されていることを確認。
ツールパレットも表示されているはず。表示さ
れていなければ「表示」/「ツールパレット」。
ツールパレットで配置したいコントロールをク
リックし、ユーザーフォーム上をドラッグすると、
その大きさにコントロールが配置される。
ツールパレットでは「A」がラベル、「ab|」がテキ
ストボックス、□がコマンドボタンである。
68
ユーザーフォームの作成とコントロール
の配置(2)



コントロール(コマンドボタン等)の表示文字は、選択し
た状態で再度字をゆっくりクリックすると文字入力モー
ドになり変更できる。「スタート」「開始」「閉じる」などと
変更しておこう。
配置したコントロールを選択すると、プロパティウィンド
ウ(表示されていなかったら「表示」/「プロパティウィ
ンドウ」)にその名前等が表示されるので、細かく設定
することができる。名前はマクロプログラムから参照
する時に使うので、このウィンドウで確認しておく。
例えば、テキストボックスはTextBox1などという名前
になっているはず。プロパティウィンドウでコントロー
ルの名前を変更することもできる。例えば
TextBoxReferenceGeneなどに変更可。
69
ユーザーフォームのコードの作成



コマンドボタンをダブルクリックすると、コードウィンド
ウが開く。
Private Sub CommandButton1_Click()
などとなっているであろう。ここにこのボタンを押したと
きに実行するコマンド群を記載する。
例えば、ユーザーはTextBox1に数字を入力し、その
後にCommandButton1「スタート」をクリックするとす
る。
Sub CommandButton1_Click()の中でTextBox1に入
力された値を参照したければ、
InNumber = TextBox1.Value
(あるいはTextBox1.Text)などとして参照できる。
コードウィンドウを表示させるには「表示」/「コード」 70
ユーザーフォームの終了



実行時にユーザーフォームを終了させるため
には、2つの方法がある。
1)ユーザーフォームの左上の×をクリック。
2)ユーザーフォームにコマンドボタンを配置し
(例えば「終了」ボタン)、これをクリックしたとき
に実行されるコードに例えば
Sub Macro2()
UserForm1.Hide
Unload UserForm1
End Sub
と記載する。
71
ユーザーフォームの表示



ではユーザーフォームを表示させるにはどうするか。
これは少し面倒くさい。
まず標準モジュールの中のマクロを起動する。つまり、
普通のMacro1()などである。このコードの中に以下の
ように記述する。
Sub Macro1()
Load UserForm1
UserForm1.Show
End Sub
このマクロを実行すると、ユーザーフォームが開いて
入力ができる。ユーザーフォームの上のコマンドボタ
ンをクリックすれば、CommandButton_Clickのコード
が実行されることになる。
72
ワークシート上へのコントロールの配置






Excelからマクロをボタン1つで起動できるようにしよう。
Excel画面のワークシートが表示されている状態で、「表
示」/ツールバー/フォーム でツールボックスを表示。
ボックス上の□(ボタン)をクリックし、シート上の置きた
い場所でドラッグ。
「マクロの登録」ウィンドウが出るので、「マクロの保存
先」が「作業中のブック」となっていることを確認して、実
行させたいマクロをクリック、OK。
ボタンの表示を変えたければ、選択して再度ゆっくり文
字をクリックすると、文字変更モードになり変更できる。
以降、このボタンをクリックするとボタンに登録したマクロ
が走る。フォームツールバーはもう必要ないので「表示」
/「ツールバー」/「フォーム」でチェックをはずして非表示
73
にしておく。
その他の機能
74
エラー処理



エラーが生じた場合、通常はエラーメッセージが表示さ
れ、プログラムが停止してデバッグ画面となる。
エラーが生じたときの処理をプログラム内で制御したい
場合は、
On Error GoTo Label1:
を実行する(Label1はどんな名前でもよい)。この命令を
実行以降は、どんなタイプのエラーであっても、エラーが
生じるとLabel1にジャンプする。
エラー処理の指定を解除したいときは
On Error GoTo 0
を実行する。つまり、最初の命令からこの命令までの間
でエラーが起こった場合のみ、Label1以降のプログラム
が実行される。
75
図の描画(1)

図形描画ツールバー(「表示」/「ツールバー」で表示)を使って
図形をシート上の並べながら「マクロの自動記録」をすると以下
のようになる。
ActiveSheet.Shapes.AddShape(msoShapeRectangle, Left,
Top, Width, Height).Select
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)
Selection.ShapeRange.Fill.Solid
Selection.ShapeRange.Fill.Visible=msoTrue
左上隅から数える
Left, Top
Width
Height
図の描画(2)


以下のように書くこともできる。
With Worksheets(“sheet1”).Shapes.AddShape(
msoShapeRectangle, Left, Top, Width, Height)
.Fill.ForeColor.RGB = RGB(255, 0, 0)
.Fill.Solid
.Fill.Visible=msoTrue
End With
AddShapeは図形(オートシェイプ)をシートに追加するとともに、
その図形をオブジェクトとして返す。
したがって、With文では新たに追加した図形を対象として、そ
の各種プロパティを設定する形になる。
図の描画(3)
図の描画(4)
図の描画(5)


図形のいろいろなプロパティ
With ActiveSheet.Shapes.AddShape(msoShapeRectangle, Left, Top, Width,
Height)
↑長方形描画、選択
.Fill.ForeColor.RGB = RGB(255, 0, 0)
↑塗りの色
.Fill.Solid
↑ベタ塗り
.Fill.Visible=msoTrue
↑塗ってある(msoFalseなら中空。msoTrue, msoFalseはTrue, Falseでも可)
.Line.ForeColor.RGB = RGB(0, 255, 0)
↑輪郭線の色
.Line.Weight = 8
↑輪郭線の太さ
.Line.Visible = msoTrue
↑輪郭線あり
別の種類の図形の指定法は
VBAヘルプでAddshapeで調べる。例えば楕円はmsoShapeOval
図の描画(6)
改行コード



機種
改行コード
Mac(OS9まで)
CR
Windows
CRLF (0D0A=13, 10)
Unix, Linux, Mac OSX
LF
(0D=13)
(0A = 10)
別のOSで作られたファイルを読む場合、ファイルを開くソフトにより正しく解釈し
てくれる場合もあるが、そうでないと改行と認識されず無視されたり変な記号が
はいり、次の行と続いてしまう。
改行コードは半角文字の一種であり、例えばMacintoshの場合16進数表示で0D、
10進数で13である。CR(キャリッジリターン)とも表示する(LFはラインフィード)。こ
のような特殊文字をVBで表現する場合にはChr関数を使う。あるいは規定定数
vbCrなどが用意されている。
CRLFは2文字相当なので注意。
コード
Chr関数
Tab
Chr(9)
LF
Chr(10)
CR
Chr(13)
CRLF
Chr(13)&Chr(10)
使用中の機種の改行コード
VB定数
vbTab
vbLf
vbCr
vbCrLf
vbNewLine
82
ファイル入出力(1)



Open "<ファイルの(場所と)名前>" For Input as #1
Do While Not EOF(1) (ファイルの最後かどうか)
Line Input #1, A (1行をAに読み込む)
~
Loop
Close #1
Open "<ファイルの(場所と)名前>" For Output as #2
~
Print #2, <書きだす内容>
~
Close #2
#1、#2は入出力のID。好きな番号にしてよい。
83
ファイル入出力(2)



ファイル入出力の際、ファイルの場所は以下のようにフル
パスで書く。
“C:\Documents and Settings\Iino\My Documents\新
基盤生命学特別演習1\2010演習\blast.txt”
しかし、いつもこのように書くのは面倒なので、デフォルト
のフォルダを決める。
Excelの通常画面から「ツール」/「オプション」で開くウィン
ドウの「全般」タブを選び、「カレントフォルダ名」に、ファイ
ルを置くフォルダ名をフルパスで書く。上の例では
C:\Documents and Settings\Iino\My Documents\新基
盤生命学特別演習1\2010演習
と書く。
「カレントフォルダ名」を空欄にしておくと、実行するExcel
ファイルと同じフォルダがカレントフォルダとなるので便利。
84
Excel VBAの文字操作関数の例









Len(Str) 文字変数Strに格納された文字の文字数。
InStr(Str, "t") Strの文字列の中で、左から探してtが何番目に来
るかという数字を返す。tがないときは0となる。同じ機能のExcel関
数はFindであり引数の順番も異なることに注意!
InStrRev(Str, “t”) InStrと同じだが、右端から探すことが異なる。
tが複数あるときは最も右のtが選ばれることになる。☆Mac版には
ないようです。
Left(Str,5) Strの文字列の左から5文字をとる。
Right(Str,7) Strの文字列の右から7文字をとる。
Mid(Str, 5, 3) Strの文字列の5文字目から3文字をとる。
UCase(Str) Strをすべて大文字にする。
LCase(Str) Strをすべて小文字にする。
Split(Str, Delimiter) 長い文字列を区切り文字で区切って分け、
結果の配列を返す。例えばStrの内容が"A,B,C,D"となっているとき、
Split(Str, ",")(0)は"A", Split(Str, ",")(3)は"D"となる。
UBound(Split(Str, ","))で要素の数-1(この場合は3)がわかる。 85
VBAのインストール
86
VBAのインストール(1)

インストールされているかどうかの確認




1)Excelを立ち上げる。
2)コマンドバーの「ツール」/「マクロ」で「Visual
Basic Editor」が表示されればVBAはインストールさ
れている。
3)さらに、「ツール」/「マクロ」/「Visual Basic
Editor」を選択しVisual Basic Editorを起動する。
4)コマンドバーの「ヘルプ」から「Microsoft Visual
Basicヘルプ」が表示されればヘルプもインストール
されているので問題ない。
87
VBAのインストール(2)

インストール



方法1)Visual Basic EditorやMicrosoft Visual Basic
ヘルプが表示されない場合はたぶん「ディスクからイ
ンストール」のような表示がされているので、これに従
う。
方法2)Windowsでは、コントロールパネルから「プロ
グラムの追加と削除」を選び、プログラム一覧から
ExcelなりOfficeを選んで「変更」、「機能の追加、削除」
で必要なコンポーネントを選び、インストールディスク
を挿入して「ディスクからインストール」。
方法3)(Macの場合。しかしWinもおそらく同様。)イン
ストーラディスクをCDドライブに入れて起動→インス
トーラプログラムを起動→Officeツールの中のVisual
88
Basic for Applicationsをインストールして完了。
ヒートマップ
Red
0
Green
0
Blue 255
0
255
255
0
255
0
255
255
0
255
0
0
89