excel excel vba n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Excel の使用法と Excel VBA を用いたプログラミング入門 PowerPoint Presentation
Download Presentation
Excel の使用法と Excel VBA を用いたプログラミング入門

Loading in 2 Seconds...

play fullscreen
1 / 89

Excel の使用法と Excel VBA を用いたプログラミング入門 - PowerPoint PPT Presentation


  • 149 Views
  • Uploaded on

Excel の使用法と Excel VBA を用いたプログラミング入門. 飯野雄一、豊島 有. 実験をするとデータがどんどん出る。 →グラフにしてかっこよく発表するにはエクセルぐらい使いこなせなきゃ! それだけじゃない。今や大量データの時代! これからの生物学者はコンピュータによる解析やプログラミングができた方が絶対有利。 本格的なプログラムでなくとも、いろんなソフトに付随しているマクロを使えるようになれば、繰り返し操作などが自動化できる。 ・・・ 手で何回も同じようなキー操作を打ち込むのはカッコよくない!

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Excel の使用法と Excel VBA を用いたプログラミング入門' - dai-townsend


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
excel excel vba

Excelの使用法とExcel VBAを用いたプログラミング入門

飯野雄一、豊島 有

slide2

実験をするとデータがどんどん出る。→グラフにしてかっこよく発表するにはエクセルぐらい使いこなせなきゃ!それだけじゃない。今や大量データの時代!これからの生物学者はコンピュータによる解析やプログラミングができた方が絶対有利。実験をするとデータがどんどん出る。→グラフにしてかっこよく発表するにはエクセルぐらい使いこなせなきゃ!それだけじゃない。今や大量データの時代!これからの生物学者はコンピュータによる解析やプログラミングができた方が絶対有利。

本格的なプログラムでなくとも、いろんなソフトに付随しているマクロを使えるようになれば、繰り返し操作などが自動化できる。・・・ 手で何回も同じようなキー操作を打ち込むのはカッコよくない!

さらに、ソフトにもともと用意されていない処理を自分のニーズに合わせて作ることができる。

slide3

「でもすぐにはなかなか、、、、」

1)プログラミングの考え方がわかればよい。

2)日頃からちょくちょく短いプログラムを書くようにする。

→だんだん慣れる。

→いざやりたいことができたら勉強すればできると思えるところまで慣れる。

excel
なぜ、この演習でまずExcelか?
  • Excelはデータ処理の最も定番のソフト。関数による統計計算もできる上、ちゃんとしたプログラム言語(VBA)が備わっている。→上達すればレポート作成に有利。→日常使うExcelで気軽にプログラムが書けると大幅なパワーアップになる!
  • Excelの表形式での視覚的なデータ表示はプログラミングを覚えるのに最適。
excel1
なぜ、この演習でまずExcelか?
  • プログラム言語はどれも似たようなもの:英語とドイツ語のような関係。☆ただし、どの読者も恐ろしく文法にうるさい。---結局機械は石頭。
  • その意味でもVBAはよい。ヘルプもデバッグ機能もあるので。しかもGUI(グラフィックユーザーインターフェース)が標準装備。
slide6
一旦覚えればあとはなんとでもなる

本を買うのもよしExcel VBAなどという本は山のように出ている。

分からないことがあったらネットで検索。→山ほど答えが書いてある。

他のプログラム言語も似たようなものなので覚えるのは難しくない。

6

excel2
Excelの基本的使い方
  • 表形式にデータを並べて処理。
  • 左端あるいは上端の番号、記号をクリックすると行や列全体が選択される。選択しておいて、上の「ホーム」タブの「セル」の「削除」をクリックすると行、列が削除される。逆に同じ場所の「挿入」で一行挿入。
  • 「ホーム」タブの「セル」の「書式」の「非表示/再表示」でその行を表示しないようにすることも可。
  • グラフにしたい部分を四角く囲って「挿入」タブをクリックする。→グラフの種類を選んでクリック。
excel3
Excelの基本的使い方
  • 飛び飛びのセルの選択Controlを押しながら順次セル範囲を選んでいく。
  • コピーの仕方1)一つのセルを選択してコピー、別のセルを選んでペースト。2)連続したセルへのコピーは、セルを選択し、右下端を持ってずりっと引きずる。どっち方向へも可。☆この際、数字は自動的に1ずつ増える場合がある。これをやめる(または強制的にやらせる)ためにはControlを押しながら引きずる。------ あとで使うので練習してみよう。
excel4
Excelの基本的使い方
  • コピーの仕方ものすごく下まで同じものをコピーして埋めたいとき:1) コピーするもとのセルをクリック2) コピーしたい領域の一番下のセルをシフトを押しながらクリック(逆順でもよい)。3) 「ホーム」タブの「編集」の「フィル」(下矢印のアイコン)をクリック。
  • エラーバーのつけかた1) グラフ上でデータ系列を選ぶ。2) 「グラフツール」「レイアウト」タブの「誤差範囲」で「その他の誤差範囲オプション」で設定ウィンドウを開く。3) 「両方向」を選び、「ユーザー設定」「値の指定」と進む。4) 「正の誤差の値」「負の誤差の値」で標準誤差の入力されているセル範囲を選ぶ。
slide12
マイクロアレイ解析

0分

160分

10分

20分

・ ・ ・ ・ ・ ・

mRNA抽出

mRNA抽出

mRNA抽出

・・・・・・・・・

蛍光ラベル

蛍光ラベル

蛍光ラベル

遺伝子1

ハイブリダイゼーション

ハイブリダイゼーション

ハイブリダイゼーション

遺伝子2

遺伝子3

 ・

 ・

 ・

slide13
テキスト形式のデータ
  • 数値データを扱う際のテキスト形式のファイルの種類(万国共通)空白区切り 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
slide14
テキストデータの読み込み
  • Excel画面から、「ファイル」/「開く」を選択。または「開く」アイコンをクリック。
  • 選択対象を「すべての読み込み可能なファイル」として、 開きたいテキストファイルを指定。
  • テキストファイルウィザードが開くので、「カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ」をチェック、「次へ」。
  • 区切り文字のうち「スペース」をチェックして「完了」。
slide15
データの並べ替え(ソート)
  • 表形式のデータを行単位で入れ替え、特定の列の数字を指標に昇順(上から下へ数字の小さい順)または降順(上から下へ数字の大きい順)に並べ変える。1) 並べ変えたいデータ全体を選択。ワークシート全体で構わない場合は「コマンド‐A」キー。2) 「データ」/「並べ替え」並べ替えウィンドウが開く。3) 選択範囲の一番上の行がタイトル行(入れ替えの対象にならない)であれば「先頭行をデータの見出しとして使用する」をチェックする。3) 「最優先されるキー」で指標とする列を選択。一番上の行がタイトル行であれば列のタイトルで選ぶ。そうでなければ列A、列B、…から選ぶ。昇順(値の小さい順)または降順(大きい順)を選び、「OK」で並べ替えが実行される。
excel5
Excelの使い方のポイント
  • 複数のセルの値から関数により計算して答えを別のセルに入れる。
  • 式の入ったセルを別のセルにコピーすると、数字(値)がコピーされるわけではなく式だけがコピーされるので、縦一列、横一列などについて同じ計算をさせることができる。
  • 関数で処理しきれないときには適宜VBAプログラミング言語によるマクロを使う。
excel6
Excelの関数
  • 方法1)結果を書き込みたいセルを選択し、「=average(A2:R2)」などと書き込む。このとき、セルの名前"A2:R2"を入力するかわりに該当するセル範囲をドラッグで選択(またはセルをクリック)してもよい。そのあとに")"を手入力するのを忘れずに。入力後は必ずEnterを入力してボックスから出ておく。先頭の"="も忘れずに。方法1’)セルを選択してから数式バー("fx"の右のボックス)に書き込んでもいい。
  • 方法2)結果を書き込みたいセルを選択し、fxをクリック。関数の一覧が表示されるので、必要な関数を選ぶと、関数ウィザードが起動。これに従って必要な入力を行う。
excel7
Excel関数の調べ方
  • 前記方法2)。関数の種類ごとに分類されているので、これかなと思った関数について、「クリックすると選択した関数のヘルプが表示されます」をクリックすると説明が現れる。
  • 「ファイル」タブの「ヘルプ」/「Microsoft Officeヘルプ」をクリック、「ヘルプの検索」ボックスに質問の文章を入れると関連のある説明を検索してくれる。
excel8
Excelの関数の例(統計関数)
  • SUM(A2:R2) A2セルからR2セルまでの合計
  • AVERAGE(A2:R2)  A2セルからR2セルまでの平均
  • COUNT(A2:R2)  A2セルからR2セルまでのうち数字のはいったセルの数
  • STDEV(A2:R2)  A2セルからR2セルまでの標準偏差
excel9
Excelの演算子
  • + :足す
  • - :引く
  • * :掛ける
  • / :割る
  • ^ :累乗
  • MOD(A1,A2) :A1をA2で割ったあまり(関数)
  • ABS(A1) :A1の絶対値(関数)
  • SQRT(A1) :A1の平方根(関数)
  • " " :文字列を指定。例:A2はセルの名前。 "A2"はA2という文字列。
  • & :文字列の連結   ("ABC" & "DEF" は "ABCDEF"になる)

[例] A2 & “DEF” と “A2” & “DEF”の違いは?

slide22
関数をコピーしたとき参照はどうなる?
  • AVERAGE(A2:R2) を下にコピーしてみましょう。A2:R2の部分はどうなるでしょうか?
  • では右にコピーしたら?
  • このように、デフォルトでは相対的な位置関係を保つようになっています(相対参照)。
  • 絶対参照にさせるためには、$をつけます。行だけまたは列だけに$をつけることもできます。AVERAGE($A2:$R2)、AVERAGE(A$2:R$2) 、AVERAGE($A$2:$R$2) と書き換えて、下と右にコピーしてみましょう。
excel10
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文字をとる。
excel11
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となる。
    • 注:ハイパーリンクの設定されているセルを選択しようとしてクリックすると、ブラウザが開いてしまう。単にセルを選びたいだけなら、隣のセルを選んだ後に矢印で移動するか、複数のセルを選択する。
excel vba
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としての)使い方もできる。
slide27
プログラムを書いて走らせるということ
  • 最初に認識しておいてください<プログラムを書いて一発で動く人はいない>たいてい、どこかに間違いがあって正しく動きません。動かないだけならいいが、暴走してウンともスンとも言わなくなることしきり。=いわゆるフリーズ。これまでは人のせいだったがこれからは自分のせい。↓防衛策:プログラムを走らせる前には必ず苦労して書いたファイルを保存することをお勧めします。
vba editor
VBA Editorの使い方
  • プロジェクトウィンドウ
    • 現在開いているワークブックの構成が表示されている。
    • ワークブック全体はVBAプロジェクトと呼ばれ、各ワークシートとModule、Formなどからなる。ダブルクリックするとそれぞれのコンポーネントに付随したマクロ(ソースコード)が表示される。
  • メインウィンドウ
    • ここにVBAプログラム(「コード」)が表示される。現在表示されているものが何であるかは、ウィンドウの一番上のバーに表示されている。表示内容の切り替えはコマンドバーの「ウィンドウ」から行う。
slide29
表の画面と裏の画面の行き来
    • VBAエディタからExcel画面に行くには以下のいずれか。1)左上のエクセルアイコンをクリック2)Control-Tabまたはalt-Tabを使ってウィンドウを選ぶ3) 「表示」/「Microsoft Excel」4)「ファイル」/「終了してMicrosoft Excelに戻る」。この場合はVBA画面は閉じられる。
  • Excel画面からVBA画面に行くには「開発」/「Visual Basic」
slide30
プロシジャー
  • Sub Macro1()End Subの間が1つのプロシジャー(一度に実行される命令群)になる。これは正確にはSubプロシジャー(サブルーチン)である。このプロシジャーが受け取る値があるときには、それが()内に書かれる。これ以外にFunctionプロシジャー(値を返すプロシジャー)、イベントプロシジャー(マウスクリック等、何かの事象が起こったときに実行されるプロシジャー)などがある。
slide31
マクロの実行とデバッグ(1)
  • マクロの実行は以下のいずれかの方法による。
    • VBA Editor画面から
      •  を押して起動。カーソルがある位置のマクロが走る。
      • 「実行」/「マクロの実行」またはFn-F5 。
    • Excel画面から
      • 「開発」/「マクロ」で実行するマクロの選択画面が出るので走らせたいマクロを選択。
      • 「表示」/「マクロ」/「マクロの表示」で同じ画面を出す。
  • 暴走してどうにもならないときは以下のいずれかの方法。
    • 画面下のタスクバーのExcelアイコン上で右クリック、「すべてのウィンドウを閉じる」で開くウィンドウで「プログラムの再起動をします」を選択。
    • Shift-Control-Escから実行中のエクセルファイルを選び「タスクの終了」
slide32
マクロの実行とデバッグ(2)
  • ファイルを開くとき
    • マクロプログラムを持つExcelファイルを一旦保存して再度開こうとすると、「マクロが無効にされました」などの警告が出る場合がある。これに対して「コンテンツの有効化」をクリックしてマクロを実行可能とする。
    • どうしても開かせてくれない場合は「ファイル」/「オプション」/「セキュリティセンター」/「セキュリティーセンターの設定」/「マクロの設定」で適切なセキュリティーレベルを選択する。
    • ちなみにWindows版Excel2007を使う人は、マクロを含むファイルは.xlsx形式では保存できません。.xlsm形式にします。
excel12
Excelファイルの呼称
  • Excelの1つのファイルを「ワークブック」と呼ぶ。
  • 下に出っ張っているタブで選択できる1ページずつを「ワークシート」と呼ぶ。
  • つまり、ワークブックは1つあるいは複数のワークシートよりなる。それぞれのワークシートには名前がついている(タブに記載)。
  • ワークシート上のひとつひとつのます目のことを「セル」と呼ぶ。セルには数字や式が書かれている。
slide34
セルの参照(1)
  • 例えば第2行第3列のセルであれば、Cells(2,3)。(参考) Range("C2")の表現も可能だがあまり実用性はない。列行の順番が逆なので注意。
  • セル範囲の参照の場合(例えば左上の2行3列)はRange(Cells(1,1),Cells(2,3))Range("A1:C2")などを使う。
slide35
セルの参照(2)
  • 前頁の内容は正確にはWorksheets(“data”).Cells(2,3)(およびWorksheets(“data”).Range(“C2”) )の表記が正しい。WorkSheetを指定しない場合は、現在アクティブなワークシート上のセル(=ActiveSheet.Cells(2,3))を意味することになる。
  • 通常はプログラム実行前に見ていたシートがアクティブシートである。
  • 別のシートをアクティブにする方法WorkSheets("data2").Activate但し、頻繁に異なるシートをActivateすると、ちらちらしてプログラムの実行も遅くなるので注意。
slide36
セルの値とプロパティ
  • ワークシート上の特定のセルに表示されている値のことを、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  内部(塗り)
slide37
セルの操作
  • セルの値を使った計算の例Cells(1,20) = Cells(1,1) / Cells(1,19)
  • セルの選択Cells(1,1).SelectSelection.Value = 5Cells(2,1).SelectSelection.Value = "Gene"
slide39
変数
  • 変数自由に値を代入して使えるもの。実態はコンピュータのメモリである。例:A = 1---- Aというメモリ領域に1という数字を入れる(=代入する)B = 2    ”=”は右辺の値を左辺の変数に代入しろという意味。C = A + B--- Aと書くと変数Aの値、つまりメモリの内容を読み出すA = 3      ことを意味する。変数AとBの内容を足してCに代入。D = A + BMsgBox D ----- Dの内容を表示する。以上の一連の命令を実行すると、Aの値は3、Bの値は2、Cの値は3、Dの値は5になる。
  • 変数名には英字と数字が使える。但し先頭は数字であってはいけない。半角255文字以内。漢字も使える!
  • 配列も使える。配列とは変数が番号付きで並んでいるようなもの。A(2) = A(1) + 1A(2,2) = B(2,2) + 1 など。
slide40
宣言文(1)
  • 変数を使うためには、使う前に変数の型の宣言をする必要がある。例:Dim A As Integer("A" を整数として定義する。)
    • Integer:整数(-32768~32768)
    • Long:長整数(-2147483648~ 2147483648 )
    • Single:単精度実数(有効数字約7桁)
    • Double:倍精度実数(有効数字約15桁)
    • String:文字列型変数
    • Boolean:論理変数。TrueとFalseのいずれかの値をとる。
    • Object:オブジェクト変数(ワークシート、セルなど何でも「物(オブジェクト)」を代入できる。)
slide41
宣言文(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個の変数を用意。
slide42
大文字と小文字
  • Visual Basicでは大文字と小文字は区別されない。つまりNameとnameは同じ意味であり別の名前としては使えない。
  • しかし、便宜上しばしば大文字小文字交じりの変数名を使う(例: NameString)。宣言文に変数名を大文字小文字交じりで書いておくと、以降、小文字のみで入力しても、 VBAエディターが自動的に大文字小文字交じりになおしてくれる。大文字に直らないときはミススペルの可能性がある。ミススペルのチェックに便利。
  • 既定語(関数、制御文など)も通常大文字で始まる。これもVBAエディタが自動的に直してくれる。さらに既定語は自動的に青字になるので、書き方が間違っていないかのチェックに便利。
slide43
演算子
  • 以下のような計算式に使う。代入 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")の意味となる。
slide44
ループ
  • コンピュータプログラムは、書かれた命令を一行ずつこなしていく。
  • しかし短い操作であれば手作業でもできる。
  • 同じ作業を繰り返し(しかも正確に)行ってくれるのがコンピュータの得意技。
  • それをさせるのがループです。→これがコンピュータプログラムのキモなのでよく習得してください。どういう順番で命令が実行されるか、よく考えながらプログラムを書いてください。
for 1
For文(ループ)(1)
  • N=0For I = 1 To 10 N=N+INext IMsgBox Nこの例ではIを1から10まで1ずつ増やしながら「N=N+I」を何度も実行する。つまり1から10までの和を計算。結果を表示する。
  • 全体のプログラムの構造が分かりやすいように、ループの中はタブ一個分、字下げをするとよい。VBAエディターでは複数の行を選択し、タブキーを押すとまとめて字下げされる。逆に字上げするときはシフト-タブ。
  • N=0For I = 1 To 10 Step 2 N=N+INext IStepが指定されている場合、指定した数ずつIを増やしていく。つまり、この例ではI=1, I=3, I=5, I=7, I=9の順に実行される。
for 2
For文(ループ)(2)
  • 二重ループN=0For Row = 1 To 100 For Column = 1 To 10 N=N+1 Next ColumnNext RowFor文を二重にする使い方もよく行われる。この例ではRowを1から100まで順に増やすが、それぞれのRowについて、Columnを1から10まで順に増やしながら実行する。つまりN=N+1は合計1000回実行される
  • 必ずFor文とNext文の対応がついていることが必要である。For Row...Next Rowの中にFor Column...Next Columnがはいっていることに注意。
slide47
マクロの実行とデバッグ(3)
  • VBAエディタ画面で「デバッグ」/「ステップイン」(Fn-F8)とやると、一行ずつ実行されるので、実行順の確認ができる。 「デバッグ」/「カーソル行の前まで実行」(Command-Fn-F8)ではカーソル位置の前まで実行される。
  • 途中、一時停止の状態での各変数の値が知りたいときは、「表示」/「イミディエイトウィンドウ」でイミディエイトウィンドウを開く。ここに、「?A」などという形で知りたい変数を書いてリターンを押すと、そのときの変数の値が表示される。ちなみに、このウィンドウにはどんな命令でも入力できる。その命令が直ちに実行される。
  • 予めプログラムの中に「Debug.Print A, B」などと書いておけば、その命令が実行されるとイミディエイトウィンドウに変数の値が書かれる。
  • ウォッチウィンドウを使ってもよい。「表示」/「ウォッチウィンドウ」でウィンドウを開く。ウォッチウィンドウ上で右クリックして「ウォッチ式の追加」でAなどと書いておくと、実行中のAの値が逐次表示される。
  • ブレークポイントを設定してから実行すると、ブレークポイントで止まるので、そのときの変数等の状態を調べることができる。コード画面の左側の枠をクリックするとその行にブレークポイントが設定される。
slide48
マクロの実行とデバッグ(4)
  • プログラム実行時にエラーが起こったとき表示されるウィンドウで「デバッグ」を選ぶとVBA画面が開く(選択される)。黄色い矢印のところで問題が生じている。
  • イミディエイトウィンドウまたはウォッチウィンドウを使って変数の値を確認する。
  • ■を選ぶとデバッグモードが終了する。これを忘れると次が実行できない。
slide49
If文(1)
  • If I = 0 Then J = 1Iが0のときのみJを1にする。
  • If I = 0 Then J = 1End IfIが0のときのみJを1にする。
  • If I = 0 Then J=1Else J=2End IfIが0のときにはJを1に、それ以外のときはJを2にする。
slide50
If文(2)
  • If I = 0 Then J=1ElseIf I=1 then J=2Else J=3End IfIが0のときにはJを1に、そうでなくIが1のときにはJを2に、それ以外のときはJを3にする。
  • ☆☆最初の表記(一行で書いてしまう形式)以外のIF文ではすべて End If を忘れないように。☆☆
slide51
条件式
  • 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かどうか」など
slide52
Doループ
  • Do While <条件式><命令群>Loop条件式が満たされる間、ループを繰り返す。
  • Do<命令群>Loop While <条件式>条件式が満たされる間、ループを繰り返す。
  • その他の制御文について、詳しくは、Visual Basicヘルプの目次から「Visual Basic言語のヘルプ」の「ステートメント」の項参照。
slide53
ループからの離脱とジャンプ
  • 以下は、途中でループを抜けたくなった場合に使う。
    • Exit Do
    • Exit For
  • プロシジャー(マクロ)を終了させるときは、
    • Exit Sub
  • 単にプログラム上の別の場所にジャンプしたいときは
    • GoTo Label1飛び先はLabel1:  とする(コロンがポイント)「Label1」の部分はどのような名前でもよい。
msgbox
MsgBox
  • メッセージを出力する関数。
  • 実はユーザーの応答(OKをクリックしたことなど)が関数の値として返される。
  • MsgBox(“Hello!”)
  • これをコードに書き込んで実行してみる。
  • 応答を受け取る書き方MsgBox(“Is this OK?”, vbOKCancel)OKが押されたらvbOK(=1), キャンセルが押されたらvbCancel(=2)という値を返す。
slide55
コメント行などの書き方
  • コメント行は’で始める。コメント行はエディターが自動的に緑にする。行の途中から’で始まるコメントを書くことも可。
  • 1行に書ききれないとき、長くなって見にくいとき、最後に _ (下線)をつけると、その行は次の行に続くという意味になる。
  • :(コロン)で複数の短い行をつないで1行に書くこともできる。
  • 1行入力が終ったときに文法的な明らかな誤りがあると怒られるので修正する(書きかけの場合などは無視する)。
slide56
ヘルプの使い方
  • VBAエディタで、「Help」/「Micorosft Visual Basic for Applications ヘルプ」または「MSDNホームぺージ」から検索。後者ではVisual Basicに関するヘルプのみ選んで閲覧して下さい。
cell cycle microarray6 xls 10
cell_cycle_microarray6.xls(名前順の10遺伝子のパターン比較)cell_cycle_microarray6.xls(名前順の10遺伝子のパターン比較)
slide60
ユークリッド距離

この距離を二乗して足したもの(の平方根)がユークリッド距離

パターンが近いほど小さくなる。

slide61
マクロの自動記録
  • VBAの非常に優れた機能。
  • 手入力で行った作業を自動的にマクロのコードに変換してくれる。
    • Excel画面から、「開発」/「マクロの記録」または「表示」/「マクロ」/「マクロの記録」
    • 現れるウィンドウで、作成されるマクロの名前を確認、マクロの保存先が「作業中のブック」となっていることを確認してOK.
    • 記録したい作業を間違えないように行う。
    • 終了したら「開発」/「記録終了」または「表示」/「マクロ」/「記録終了」をクリックして完了。
    • VBAエディター画面で、作成されたマクロを確認。新しいModuleが作られているかもしれないので注意。
  • しかし、必ずこのマクロが正しく動くわけではない。試しに、作成されたマクロをすぐに実行してみるとよい。
  • あとは書かれたコードの意味を推定しつつ、必要に応じて書換えていく。
slide62
オブジェクト、プロパティ、メソッド
  • 例えば「特定のセル(Range("A1"))」というオブジェクトについて、それが持ついろいろな属性をプロパティという。例えば.Value、 .Hight などはすべてプロパティ。
  • そのオブジェクトに対するいろいろな操作をメソッドという。例えばRange("A1").Clearはセルの値を削除するというメソッドである。
  • WorkSheets("data").Range("A1")は、WorkSheets ("data")オブジェクトの持つひとつのプロパティである。つまり、何かのオブジェクトのプロパティーがそれ自身オブジェクトであることも多い。
  • 従って、何々の何々の、、、と多段階に続く。例えばWorkSheet("data").Range("A1").Font.Sizeなどとなる。
slide63
オブジェクト、プロパティ、メソッド
  • オブジェクトには種類がある。例えばCells(1,2)もRange(A1:C2)もRangeオブジェクトという種類のオブジェクトである。
  • オブジェクト間の関係を知るためには、ヘルプの質問のボックスに知りたい語を入れてみるとよい。オブジェクトの説明が表示されると階層関係の図が出てくる。
  • 同じ名前のプロパティでも対象により違う意味になる。例えばFontプロパティはワークシートのセルのフォントでもありうるし、グラフのタイトルのフォントでもありうる。Xxx.FontのXxx部分(対象)を特定することが大事。
slide64
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).ValueEnd Withと書かれる。先頭の.がWorkSheets("data")の省略を示す。End Withまでの間、Withの効力が及ぶ。
slide66
コントロール
  • ユーザーインターフェースのためのボタン。コマンドボタン:押すと設定されたマクロが実行される。テキストボックス:テキストや数値を入力する。チェックボタン:チェックをつけるかはずすかできる。リストボックス:一連のリストから選ばせる。ラベル:字を書くだけ。
slide67
ユーザーフォーム
  • コントロールを配置するための画面。この上に各種入力ボタンや入力欄(コントロール)を配置し、マクロの実行によってユーザーフォームを表示する。
  • ユーザーフォームが表示された状態で、コントロールに入力を行うことができる。
slide68
ユーザーフォームの作成とコントロールの配置(1)ユーザーフォームの作成とコントロールの配置(1)
  • VBAエディタ画面から「挿入」/「ユーザーフォーム」でユーザーフォームが作成され、表示される。同時にプロジェクトウィンドウでもユーザーフォームが追加されていることを確認。
  • ツールボックスも表示されているはず。表示されていなければ「表示」/「ツールボックス」。
  • ツールボックスで配置したいコントロールをクリックし、ユーザーフォーム上をドラッグすると、その大きさにコントロールが配置される。
  • ツールボックスでは「A」がラベル、「ab|」がテキストボックス、□がコマンドボタンである。
slide69
ユーザーフォームの作成とコントロールの配置(2)ユーザーフォームの作成とコントロールの配置(2)
  • コントロール(コマンドボタン等)の表示文字は、選択した状態で再度字をゆっくりクリックすると文字入力モードになり変更できる。「スタート」「開始」「閉じる」などと変更しておこう。
  • 配置したコントロールを選択すると、プロパティウィンドウ(表示されていなかったら「表示」/「プロパティウィンドウ」)にその名前(オブジェクト名)等が表示されるので、細かく設定することができる。名前はマクロプログラムから参照する時に使うので、このウィンドウで確認しておく。
  • 例えば、テキストボックスはTextBox1などという名前になっているはず。プロパティウィンドウでコントロールの名前を変更することもできる。例えばTextBoxReferenceGeneなどに変更可。
slide70
ユーザーフォームのコードの作成
  • コマンドボタンをダブルクリックすると、コードウィンドウが開く。Private Sub CommandButton1_Click()などとなっているであろう。ここにこのボタンを押したときに実行するコマンド群を記載する。
  • 例えば、ユーザーはTextBox1に数字を入力し、その後にCommandButton1「スタート」をクリックするとする。Sub CommandButton1_Click()の中でTextBox1に入力された値を参照したければ、InNumber = TextBox1.Value(あるいはTextBox1.Text)などとして参照できる。
  • コードウィンドウを表示させるには「表示」/「コード」
slide71
ユーザーフォームの終了
  • 実行時にユーザーフォームを終了させるためには、2つの方法がある。
  • 1)ユーザーフォームの左上の×をクリック。
  • 2)ユーザーフォームにコマンドボタンを配置し(例えば「終了」ボタン)、これをクリックしたときに実行されるコードに例えばSub Macro2()UserForm1.HideUnload UserForm1End Subと記載する。
slide72
ユーザーフォームの表示
  • ではユーザーフォームを表示させるにはどうするか。これは少し面倒くさい。
  • まず標準モジュールの中のマクロを起動する。つまり、普通のMacro1()などである。このコードの中に以下のように記述する。Sub Macro1()Load UserForm1UserForm1.ShowEnd Sub
  • このマクロを実行すると、ユーザーフォームが開いて入力ができる。ユーザーフォームの上のコマンドボタンをクリックすれば、CommandButton_Clickのコードが実行されることになる。
slide73
ワークシート上へのコントロールの配置
  • Excelからマクロをボタン1つで起動できるようにしよう。
  • Excel画面のワークシートが表示されている状態で、「開発」/「挿入」でフォームコントロールの中から□(ボタン)を選び、シート上の置きたい場所でドラッグ。
  • 「マクロの登録」ウィンドウが出るので、「マクロの保存先」が「作業中のブック」となっていることを確認して、実行させたいマクロをクリック、OK。
  • ボタンの表示を変えたければ、選択して再度ゆっくり文字をクリックすると、文字変更モードになり変更できる。
  • 以降、このボタンをクリックするとボタンに登録したマクロが走る。
slide75
エラー処理
  • エラーが生じた場合、通常はエラーメッセージが表示され、プログラムが停止してデバッグ画面となる。
  • エラーが生じたときの処理をプログラム内で制御したい場合は、On Error GoTo Label1:を実行する(Label1はどんな名前でもよい)。この命令を実行以降は、どんなタイプのエラーであっても、エラーが生じるとLabel1にジャンプする。
  • エラー処理の指定を解除したいときはOn Error GoTo 0を実行する。つまり、最初の命令からこの命令までの間でエラーが起こった場合のみ、Label1以降のプログラムが実行される。
slide76
図の描画(1)
  • 図形描画ツールバー(「表示」/「ツールバー」で表示)を使って図形をシート上の並べながら「マクロの自動記録」をすると以下のようになる。ActiveSheet.Shapes.AddShape(msoShapeRectangle, Left, Top, Width, Height).SelectSelection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0) Selection.ShapeRange.Fill.SolidSelection.ShapeRange.Fill.Visible=msoTrue

左上隅から数える

Left, Top

Width

Height

slide77
図の描画(2)
  • 以下のように書くこともできる。With Worksheets(“sheet1”).Shapes.AddShape( msoShapeRectangle, Left, Top, Width, Height) .Fill.ForeColor.RGB = RGB(255, 0, 0) .Fill.Solid .Fill.Visible=msoTrueEnd With
  • AddShapeは図形(オートシェイプ)をシートに追加するとともに、その図形をオブジェクトとして返す。したがって、With文では新たに追加した図形を対象として、その各種プロパティを設定する形になる。
slide80
図の描画(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
slide82
改行コード
  • 別のOSで作られたファイルを読む場合、ファイルを開くソフトにより正しく解釈してくれる場合もあるが、そうでないと改行と認識されず無視されたり変な記号がはいり、次の行と続いてしまう。
  • 改行コードは半角文字の一種であり、例えばMacintoshの場合16進数表示で0D、10進数で13である。CR(キャリッジリターン)とも表示する(LFはラインフィード)。このような特殊文字をVBで表現する場合にはChr関数を使う。あるいは規定定数vbCrなどが用意されている。
  • CRLFは2文字相当なので注意。
slide83
ファイル入出力(1)
  • Open "<ファイルの(場所と)名前>" For Input as #1Do While Not EOF(1)  (ファイルの最後かどうか)Line Input #1, A (1行をAに読み込む) ~LoopClose #1
  • Open "<ファイルの(場所と)名前>" For Output as #2~Print #2, <書きだす内容>~Close #2
  • #1、#2は入出力のID。好きな番号にしてよい。
slide84
ファイル入出力(2)
  • ファイル入出力の際、ファイルの場所は以下のようにフルパスで書く。“C:\Documents and Settings\Iino\My Documents\新基盤生命学特別演習1\2010演習\blast.txt”
  • しかし、いつもこのように書くのは面倒なので、デフォルトのフォルダを決める。Excelの通常画面から「ツール」/「オプション」で開くウィンドウの「全般」タブを選び、「カレントフォルダ名」に、ファイルを置くフォルダ名をフルパスで書く。上の例では C:\Documents and Settings\Iino\My Documents\新基盤生命学特別演習1\2010演習と書く。
  • 「カレントフォルダ名」を空欄にしておくと、実行するExcelファイルと同じフォルダがカレントフォルダとなるので便利。
excel vba1
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)がわかる。
vba 1
VBAのインストール(1)
  • インストールされているかどうかの確認
    • 1)Excelを立ち上げる。
    • 2)コマンドバーの「開発」で「Visual Basic」が表示されればVBAはインストールされている。
    • 3)さらに、「開発」/「Visual Basic」を選択しVisual Basic Editorを起動する。
    • 4)コマンドバーの「ヘルプ」から「Microsoft Visual Basicヘルプ」が表示されればヘルプもインストールされているので問題ない。
vba 2
VBAのインストール(2)
  • インストール
    • 方法1)Visual Basic EditorやMicrosoft Visual Basicヘルプが表示されない場合はたぶん「ディスクからインストール」のような表示がされているので、これに従う。
    • 方法2)Windowsでは、コントロールパネルから「プログラムと機能」を選び、プログラム一覧からExcelなりOfficeを選んで「変更」、「機能の追加、削除」で必要なコンポーネントを選び、インストールディスクを挿入して「ディスクからインストール」。
    • 方法3)(Macの場合。しかしWinもおそらく同様。)インストーラディスクをCDドライブに入れて起動→インストーラプログラムを起動→Officeツールの中のVisual Basic for Applicationsをインストールして完了。
slide89
ヒートマップ

255

255

0

255

0

0

0

255

255

Red

Green

Blue

0

0

255

0

255

0