統計科学第 4 回 ExcelVBA の基礎 2018/4/27 1
先週の感想から A 前回の授業では机上で学習を行い 次の授業で実際にエクセルを使って実習する流れがとてもよいと思いました 机上で解ったつもりでも エクセルの操作に躓いたりしたとき 先生に尋ねることができるので問題解決ができて良かったです テーマは面白かったのですが 先頭文字コードを 101 で割った余りが相性とは関連ないように思われるので 本当に相性診断結果が期待される式であればもっと面白いと思う 2018/4/27 2
先週の感想から B 論理を学んだ上で実践する授業は わかった気になった部分が本当に分っているかどうか明確に確認できてよかった 今後難しいと思われる論理もステップを踏むことで簡単にクリアして行けたら嬉しいです 実習形式は覚えやすいのでいいと思ったが 印刷が自腹なのは負担になるので manaba での提出を希望します 2018/4/27 3
はじめての VBA Excel に作成した表やデータベースに, 簡単なマクロを組み込むだけで実用的なシステムにできる このマクロを作るプログラミング言語が Excel VBA(Visual Basic for Applications) である 本講義では 応用ソフト Excel の中で実行できるマクロを プログラミング言語 ExcelVBA で作成する方法を学ぶ 2018/4/27 4
プログラムとは何? プログラムとはコンピュータに対する命令書であり プログラム = ソフト ( ウェア ) である コンピュータ ( ハードウェア ) は プログラム ( ソフト ) が無ければ何もできない ただの箱 プログラムを作ることをプログラミングといい その言語がプログラミング言語で 次に大別できる 基本ソフト (OS):Windows や MacOS など, 応用ソフトの土台のソフト 応用ソフト ( アプリケーション ):Word, Excel, ブラウザ (IE など ): 仕事や生活で活用するソフト マクロ : 応用ソフトの中で実行できるプログラム 2018/4/27 5
なぜ ExcelVBA を学ぶのか? マクロ以外にパソコンで動く応用ソフトを作成するには VisualBasic(VB) や VC++ などのプログラミング言語を使用する それらの方が役に立つ気がする ExcelVBA を学ぶメリットは 1. VB や VC++ に比べ文法が理解し易い 2. Excel インストールの全パソコンでプログラム可能 3. VB の文法に近い VC++,Java など他言語のプログラむでも役立つ 4. 事務処理システムを安く短時間に作れるので 人材ニーズが高い 2018/4/27 6
VBA 用の設定 開発 の準備 Excel のリボン内に VBA 用の [ 開発 ] タブがない場合 タブを表示するには 1 ファイル タブをクリック 2 オプション リボンのユーザ設定 をクリック 3 メインタブ 欄の 開発 をチェックして OK この作業は個人用パソコンなら最初だけ行えばよいが 大学パソコンの環境が毎回初期化される場合は 電源 ON の度に行う 2018/4/27 7
VBA を始める Excel を起動する (Excel アイコンをダブルクリックし起動後 空白ブック を選択 ) ExcelVBA の環境 VBE を起動する. 1 リボンの 開発 タブを クリック 2 Visual Basic をクリック 図 1 VBE の画面 2018/4/27 8
VBE とワークシートの切替え VBE とワークシートの切替えは図 2 のように画面の一番下のタスクバーで行う マウスでポイント後表示したい方をクリック 図 2 VBE とワークシートの切替え 2018/4/27 9
プログラムの新規作成 VBA を書き込むウィンドウ ( コードウィンドウ ) を新規作成する 挿入 標準モジュール の順にクリックブックファイル名 ( 初期値は Book1 ) 図 3 コード ウィンドウ 2018/4/27 10
VBA の実行 例題 1 図 4(a) の入力ウィンドウで自分の今の年齢を入力し OK クリックし図 4(b) に十年後の年齢を表示する VBA を作成する (a) 入力 図 4 例題 1 の実行 (b) 出力 2018/4/27 11
VBA プログラムの入力 コードウィンドウに図 5 の VBA プログラムを書く 英字 数字 記号 スペースはすべて半角で入力する 図 5 VBA プログラムの入力 2018/4/27 12
プログラムの基本形 Sub マクロ名 () 文 1; 文 2; End Sub VBA の基本構造 文 1, 文 2 はコンピュータ命令で上から順に実行する 条件により実行文を選んだり同じ文を繰返し実行する方法もある 原則 1 行 1 文だが複数文を半角セミコロン ; で区切り文 1; 文 2; と 1 行入力できる 2018/4/27 13
VBA の実行 (VBE とワークシート ) VBE 1 Sub から EndSub 間のある箇所にカーソルをおく 2 実行ボタンをクリック ワークシート 1 ワークシートを表示 2 リボンの開発タブ マクロの順にクリック 3 マクロ名を選択し実行をクリック 2018/4/27 14
VBA の保存 VBA プログラムを Ex01.xlsm で保存する 1 ワークシートを表示 2 ファイル 名前を付けて保存 をクリック 3 コンピュータ 参照 をクリック 4 ファイル名 Ex01( 拡張子.xlsm 不要 ) ファイル種類を Excel マクロ有効ブックとし 保存 をクリック Excel ブックは通常ファイル名の後に拡張子.xlsx が自動で付くが VBA を含むと拡張子 xlsm が付く 2018/4/27 15
VBA の保存 図 6 名前を付けて保存 2018/4/27 16
VBA ファイルを読込み実行 1 VBA ファイル Ex01.xlsm を開く 2 コンテンツ有効化 ボタンをクリック 3 セキュリティの警告 は はい をクリック 4 VBA が含まれるがコードウィンドウが表示されない場合は図 7 の Module1 をダブルクリック 図 7 コードウィンドウの再表示 2018/4/27 17
Coffee break 2018/4/23 18
好きな花 ( その 1) 桜 ( さくら ) 桜の花言葉 : 神秘な心 優れた美人 純潔 精神美 桜を見て感動し 笑顔 になり その 笑顔 はどんどん連鎖し みんなが 笑顔 になる 2017/4/27 19
札幌市内の桜の名所 ( その 1) 円山公園 北海道神宮に隣接し 1034 本の桜が咲き乱れる公園 公園で楽しみ神社で味わうも良し 見頃 :4 月下旬 ~5 月中旬 2017/4/27 20
小樽市内の桜の名所 ( その 1: 手宮公園 ) 700 本の濃淡様々な桜のピンクの上に空の青 眼下に石狩湾の青と 対岸の山の残雪のコントラストが美しい 見頃 :5 月上旬 ~ 中旬 2017/4/27 21
小樽市内の桜の名所 ( その 2: 小樽公園 ) 繁華街花園の近く明治開園の歴史ある公園 小樽市花ツツジの他エゾヤマザクラやソメイヨシノなど 900 本の桜 見頃 :5 月上旬 ~ 中旬 2017/4/27 22
小樽市内の桜の名所 ( その 3: 水天宮 ) 小樽港を見下ろす高台の神社 広げた枝に咲き誇る桜と背景の白雪を残す山 神社の厳かさと美しい眺めが一体化 見頃 :5 月上旬 ~ 中旬 2017/4/27 23
VBA の文字入力ポイント プログラムは大半を半角で入力する 半角文字は半角英数入力モードの入力が効率良い ( 文字変換確定の手間を省略可 ) ひらがな ( 全角入力 ) と半角英数モード ( 半角入力 ) の切替は [ 半角 / 全角 ] キーを用いる 半角シングルクォート から行末まではコメント データを読み書きするシート選択は Sheets( シート名 ).Select シート名は半角ダブルクォート " で囲む 2018/4/27 24
VBA の定数と代入 プログラム中の変化しないデータを定数という " 好きな数 " は文字列定数,7は数値定数である 文字列定数はダブルクォート " で囲む 特定セルへのデータ代入は Range( セル番地 ).Value= 定数, 計算式, セル, 変数 ( 左辺 )=( 右辺 ) は 左辺に右辺を代入 左辺は必ず ( セルや変数の ) 入れ物である 決して定数や計算式を置いてはならない 2018/4/27 25
VBA の出力方法 ( ボックスとセル ) 出力ボックスにデータやメッセージ表示 MsgBox 定数, 計算式, セル, 変数 & は前後の 2 データを文字列で連結し & の前後には半角スペースを入れる Sheet1 シートの A2 セルに文字列 5*3-6/2= B2 セルに数式 5 3-6 2 の結果を記入 Sub 数式のセル出力 () Sheets("Sheet1").Select ' Range("A2").Value = "5*3-6/2=" ' Range("B2").Value = 5 * 3-6 / 2 ' End Sub 2018/4/27 26
VBA の四則演算 四則演算等の計算式に次の記号文字列を用いる +( 足算 ) -( 引算, 負数 ) *( 掛算 ) /( 割算 ) ( 整数割算商 ) Mod( 整数割算余 ) ^( べき乗 ) 計算優先順位は小中学校の数学と同じ ( ) 中の計算を優先する 中括弧 { } や大括弧 [ ] を使えない 2018/4/27 27
VBA で文字列セル入力例 Sheet1 の A3 に文字列 自分の姓名 B3 に自分の姓と名の連結結果を記入するプログラム Sub 文字列式のセル出力 () Sheets("Sheet1").Select Range("A3").Value = " 自分の姓名 " Range("B3").Value = 山田 " & " 太郎 " End Sub 2018/4/27 28
VBA の例題 1( 定数出力 ) Sheet1 シートの A1 セルに文字列 好きな数 B1 セルに数 7 を記入 出力ボックスで 嫌いな数 =13 と表示 出力ボックスで 好きな数 = に続き B1 セルの内容を表示 C1 セルに B1 セルの内容をコピー Sub 定数出力 () Sheets("Sheet1").Select Range("A1").Value = " 好きな数 " Range("B1").Value = 7 MsgBox " 嫌いな数 =" & 13 MsgBox " 好きな数 =" & Range("B1").Value Range("C1").Value = Range("B1").Value End Sub 2018/4/27 29
VBA の変数と入力ボックス例 Sheet1 シートの A1 セルに名前を入れ インプットボックスに敬称と結合して A2 セルに表示するプログラム Sub 敬称付 () Dim namae As String, keisho As String Sheets("Sheet1").Select namae = Range("A1").Value keisho =InputBox(" 敬称は?") namae = namae & keisho Range("A2").Value = namae End Sub 2018/4/27 30
VBA の変数宣言 変数宣言は DimAs 文を用い下記書式である Dim 変数名 As データ型 データ型は変数にどんな種類 ( タイプ ) の値が入るかを指定する 代表的なデータ型 データ型意味 String Integer 整数型 データの範囲 文字列型 2GB までの文字列 -32,768~32,767 の整数 Double 倍精度実数型小数含め 15 桁程度 2018/4/27 31
VBA の入力ボックス 入力ボックスを用い変数やセルにデータをキー入力するには 変数またはセル = InputBox( プロンプト ) プロンプトとは ユーザに入力を促す文字列で入力欄上に表示される InputBox は String 型データを返す関数で OK クリックで入力欄の文字列 キャンセル クリックで空文字列 "" を返す 2018/4/27 32
VBA の変数宣言強制化 VBA では Dim で変数宣言を行わず変数を使える その時変数はすべて Variant 型 ( 何でも型 ) となる 一見楽に見えるが Variant 型変数にはどのデータも代入できるのでデバッグが難しくなる OptionExplicit は宣言しない変数は警告する設定である 変数宣言強制するには ツール オプション 編集 変数の宣言を強制する にチェック OK をクリックする コードウィンドウの先頭行に OptionExplicit と表示される 2018/4/27 33
課題 1 ラブラブカップル キーボードから あなたの名前 と 好きな人の名前 を入力し あなた と 好きな人 はラブラブです と表示する VBA プログラムを作成せよ < ヒント 1> 名前の入力は InputBox 関数を用いる < ヒント 2> 出力表示 あなた と 好きな人 はラブラブです は MsgBox 関数を用いる 思いました を B2 に入れる 2018/4/13 統計科学 34
課題 2 名前と年齢入力 名前と年齢を聞き さんは若く見えますね ( 年齢 -5) 歳くらいだと思いました と表示する VBA プログラムを作成せよ < ヒント 1> 名前と年齢は InputBox 関数を用いる < ヒント 2> 出力表示は MsgBox 関数を用いる < ヒント 3> その後 Range 関数を用い 名前を A1 " さんは若く見えますね " を B1 年齢 -5 を A2 歳くらいだと思いました を B2 に入れる 2018/4/13 統計科学 35
課題 3 講義と課題の感想 1. 講義の難易度はどうでしたか? 2. 課題 1 と課題 2 の難易度はどうでしたか? 3. その他 ( 何でも ) 気づいたことを書いてください 2018/4/13 統計科学 36