1 / 28

はじめての Excel マクロ・ VBA ~ (3) VBE によるプログラミング ~

はじめての Excel マクロ・ VBA ~ (3) VBE によるプログラミング ~. 兵庫教育大学大学院 森山 潤 2005.8. VBE とは. ActiveX コントロールの設定では, VBE で直接,コードを編集した。 VBE = Visual Basic Editor つまり,マクロは,記録機能を使わずに VBE でプログラミングすることができる。. VBE のソースコード. 言い換えれば,記録機能で記録した操作内容は, Visual Basic で記述されている。. Sub sample() ← マクロ名        ~ 注釈文 ~

omana
Download Presentation

はじめての Excel マクロ・ VBA ~ (3) VBE によるプログラミング ~

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. はじめてのExcel マクロ・VBA~(3) VBEによるプログラミング ~ 兵庫教育大学大学院 森山 潤 2005.8

  2. VBEとは • ActiveXコントロールの設定では,VBEで直接,コードを編集した。 VBE = Visual Basic Editor つまり,マクロは,記録機能を使わずにVBEでプログラミングすることができる。

  3. VBEのソースコード • 言い換えれば,記録機能で記録した操作内容は,Visual Basicで記述されている。 Sub sample()← マクロ名        ~ 注釈文 ~ Range("F4").Select ActiveCell.FormulaR1C1 = "150" Range("F5").Select ActiveCell.FormulaR1C1 = "200"        ~ 中略 ~ Range("F15").Select ActiveCell.FormulaR1C1 = "125" Range("F4").Select End Sub

  4. VBEのソースコード Sub sample()  ・・・ 自動的に「()」が付く    マクロ名「sample」のソースコードが記述される。 End Sub    ・・・ Sub~End subの間が,一つのマクロになる。 Range("F4").Select   ・・・ F4のセルを選択する ActiveCell.FormulaR1C1 = "150“・・・ 選択セルに代入 ※コマンドが自動生成されるので,不必要な記述も多い Range(“ F4”) = 150  も同じ意味

  5. VBEのソースコード  反復処理 For i = 0 to 100    処理 Next i  条件分岐処理  If 条件文 Then          真の場合の処理1 Else          偽の場合の処理2 End if

  6. VBEによるプログラミング VBEでルーレットゲームを作ってみよう!

  7. VBEによるプログラミング <ルーレットゲームの機能> ●コマンドボタンを押すと,乱数を用いて3桁の数字を発生する。 ●決められた回数(200回等)だけ乱数を発生したら停止する。 ●停止した段階の数値が3桁の場合は「ビンゴ」,2桁の場合は「もう少し!」,ばらばらの場合は,「残念」と表示される。 ●特に,「7」-「7」-「7」の場合は,「ラッキー7!」と表示される。

  8. VBEによるプログラミング • 画面のデザイン 数字の表示 セル結合。48point 文字の表示 セル結合。24point Excel上でシートを編集し,ゲーム画面をデザインする。

  9. VBEによるプログラミング • VBEの起動 「ツール」→「マクロ」→「マクロ」

  10. VBEによるプログラミング • マクロの新規作成 マクロ名の入力 例:「ttt3」等 「作成」ボタンをクリックすると,VBEが起動する

  11. VBEによるプログラミング Sub ttt3() ・・・ マクロ名  この間にプログラムを記述 End Sub

  12. VBEによるプログラミング • STEP1 セルに数値を出力する Range(“セル番地”)=値(or”文字列“)   ルーレットを表示するセルをD3,F3,H3とすると, Range("D3") = 3 Range("F3") = 5 Range("H3") = 7

  13. VBEによるプログラミング • STEP2 乱数を発生し,整数化する Rnd()   ・・・ 0~1.0の範囲で乱数を発生 Round(数値, 桁)  ・・・ 指定した桁以下を四捨五入 p1 = Round(Rnd() * 10, 0) 変数p1に,「10倍した乱数」の「0桁」以下を四捨五入した値(整数)を代入する。同様に,変数p2,p3を作成する。

  14. VBEによるプログラミング • STEP3 整数化した乱数をセルに出力 Range,Round,Rndを組み合わせると,整数化した乱数をセルに出力することができる。 p1 = Round(Rnd() * 10, 0) p2 = Round(Rnd() * 10, 0) p3 = Round(Rnd() * 10, 0) Range("D3") = p1 Range("F3") = p2 Range("H3") = p3

  15. VBEによるプログラミング • STEP4 指定した回数だけ,乱数発生処      理を反復する。 For a = 0 to 100    乱数発生の処理(STEP3のプログラム) Next a 処理が早すぎる場合は,「空ループ」を作ることで,わざと遅くすることができる。 (注意!!)For文とNext文は,別の行に記述する。

  16. VBEによるプログラミング For a = 1 To 250 For b = 1 To 250 Next b p1 = Round(Rnd() * 10, 0) p2 = Round(Rnd() * 10, 0) p3 = Round(Rnd() * 10, 0) Range("D3") = p1 Range("F3") = p2 Range("H3") = p3 Next a 遅延処理(空ループ) 乱数発生の処理 反復処理

  17. VBEによるプログラミング • STEP5 結果を判断してコメントを出力する If 条件文 Then          真の場合の処理1 Else          偽の場合の処理2 End if 条件文には,「(条件1) And (条件2)」のように複数の条件を設定することができる。(orも可)

  18. VBEによるプログラミング • 条件判断の構造・・・3つの条件文の入れ子 もし   「7-7-7」  ならば   「ラッキー7!」 でなければ もし       「3つの数値が等しい」 ならば 「ビンゴ!」 でなければ もし 「2つの数値が等しい」 ならば 「おしい!」 でなければ           「残念!」

  19. VBEによるプログラミング • STEP5-1 「ラッキー7(7-7-7)」の場合   条件: p1=7,p2=7,p3=7 処理: D13セルに「ラッキー7☆」と出力 If (p1 = 7) And (p2 = 7) And (p3 = 7) Then Range("D13") = "ビンゴ!!ラッキー7☆" Else      ~ 次の条件文へ ~

  20. VBEによるプログラミング • STEP5-2 「ビンゴ」の場合 条件: p1=p2,p1=p3の場合 処理:D13セルに「ビンゴ!」を出力  ~前の条件文~ Else If (p1 = p2) And (p1 = p3) Then Range("D13") = "ビンゴ! すごい!!" Else  ~次の条件文へ~

  21. VBEによるプログラミング • STEP5-3 「おしい」の場合 条件:p1=p2 又は p2=p3 又は p1=p3 処理: D13セルに「おしい」を出力  ~前の条件文~ Else If (p1 = p2) Or (p1 = p3) Or (p2 = p3) Then Range("D13") = "もう少し!" Else  ~次の条件文へ~

  22. VBEによるプログラミング • STEP5-4 「残念」の場合 条件:上記のいずれにも合致しない場合  処理:D13セルに「残念」を出力 Else Range("D13") = "残念!" End If  ・・・ 3つ目の条件文の終了宣言 End If   ・・・ 2つ目の条件文の終了宣言 End If     ・・・ 1つ目の条件文の終了宣言

  23. VBEによるプログラミング 条件文全体の構造をよく確かめましょう。タブを利用すると構造が読み取りやすくなる。 If (p1 = 7) And (p2 = 7) And (p3 = 7) Then Range("D13") = "ビンゴ!!ラッキー7☆" Else If (p1 = p2) And (p1 = p3) Then Range("D13") = "ビンゴ! すごい!!" Else If (p1 = p2) Or (p1 = p3) Or (p2 = p3) Then Range("D13") = "もう少し!" Else Range("D13") = "残念!" End If End If End If

  24. VBEによるプログラミング • STEP6 ルーレット回転中のコメントを出      力する。   ルーレットの回転 = プログラムの実行 Sub ttt3()   ・・・  プログラムの先頭 Range(“D13”) = “♪♪♪“  ・・・回転中のコメント For a = 1 To 250 ~以下,反復処理,乱数発生処理,条件分岐処理~

  25. VBEによるプログラミング • STEP7 シート上にスタートボタンを設置 STEP6までで,プログラムの機能構成は完成した。最後に,コマンドボタンを設置し,プログラムをシート上から起動できるようにする。 「コントロール・ツールボックス」 →「デザインモード」 →「コマンドボタン」 →シート上に設置。

  26. VBEによるプログラミング • Caption → 「ルーレットスタート!!」 Captionを「ルーレットスタート!!」に

  27. VBEによるプログラミング ボタンをダブルクリック   ↓ VBE画面への切り替え コマンドボタンのコード Private Sub CommandButton1_Click() ttt3 ・・・ 作成したプログラム名を入  End Sub 完成!!!

  28. 資料(ルーレットゲームのプログラム) Sub ttt3() Range("D13") = "♪♪♪" For a = 1 To 250 For b = 1 To 250 Next b p1 = Round(Rnd() * 10, 0) p2 = Round(Rnd() * 10, 0) p3 = Round(Rnd() * 10, 0) Range("D3") = p1 Range("F3") = p2 Range("H3") = p3 Next a If (p1 = 7) And (p2 = 7) And (p3 = 7) Then Range("D13") = "ビンゴ!!ラッキー7☆" Else If (p1 = p2) And (p1 = p3) Then Range("D13") = "ビンゴ! すごい!!" Else If (p1 = p2) Or (p1 = p3) Or (p2 = p3) Then Range("D13") = "もう少し!" Else Range("D13") = "残念!" End If End If End If ゲームのコード ボタンのコード Private Sub CommandButton1_Click() ttt3 End Sub

More Related