VISUAL BASIC 劉 建華 2004.11.10
VB と VBA Visual Basicは可視化対象プログラム言語である.それを使って,正式のWindows風のプログラムを作ることができる. Visual Basicの一部の機能は,Microsoft Excelの中に取り入れられ,Visual Basic Applicationと呼ばれる(略称はVBA).VBAは,VBより機能が少ないが,基礎の部分が同じである. これからVBAを用いて,下の二つの内容を紹介することにする. Excel Visual Basic 応用 2. ExcelでVBAの応用 VBA 基礎 基礎 1. VBプログラム製作の基礎
Excelで ツール ー> マクロー> Visual Basic Editor 新しいWindowが現れる. (1/4) Enter the Editor Excelで ツール ー> マクロー> Visual Basic Editor 新しいWindowが現れる.
新しいWindowのメニューで 挿入ー>ユーザーフォーム 小さいWindowが現れる. タイトルバーにUserForm1と書かれている. (2/4) Add a UserForm 新しいWindowのメニューで 挿入ー>ユーザーフォーム 小さいWindowが現れる. タイトルバーにUserForm1と書かれている.
(3/4) Interface of the Editor これが,Visual Basic Editorのインターフェイスである.後ほど詳しく説明する.
(4/4) Modify the Font of Code 新しいWindowのメニューで ツールー>オプション 右のダイアログが現れる. エディタの設定ー>サイズ 16と設定してください.
(1/3) Simple Program (Add Button) 一緒に簡単なプログラムを作る. 1. UserForm1でボタンを作る. ②ドラッグする ①クリックする
(2/3) Simple Program (Add TextBox) 2. ボタンの下で,テクストボックスを作る. ①クリックする ②ドラッグする
(3/3) Simple Program (Add Code) 3. ボタンをダブルクリックして,コードのWindowが現れる. ①ダブルクリックする ②このWindowが現れる Private Sub CommandButton1_Click() TextBox1.Text = 2004 End Sub ③ここにコードを入力する. 一つの簡単なプログラムができた.
ツールバー中の三角 をクリックして,プログラムを実行する. Run The Program ツールバー中の三角 をクリックして,プログラムを実行する. 実行すると, 右のようなWindowが現れる. ボタンをクリックすると,テキストボックスの中にコードに書いた文字が現れる. Windowの右上の×をクリックすると,プログラムが終了する. 2004
Feather of Visual Basic 1.インターフェイス C,Fortranなどは,インターフェイスがない. Visual Basicが,インターフェイスを持っている.可視化言語である.図や表を作ることができる.インターフェイスを自分で自由にデザインできる. 2.コンパイルの仕方 C,Fortranなどは,実行すると,すぐ計算する. Visual Basicは,実行しても,操作(例えば,ボタンを押すなど)しなければ,待機する.操作してから,動き始める.必要に応じて,多くのことができる.
(1/4) Example Program 1 Visual Basicを説明しながら,次のプログラムを作る. 長方形の長さと幅を入力して,面積と対角線長さを計算するプログラム 準備 Formの設計 Codeの編集
(2/4) Create a New UserForm メニューバーから選択する. 挿入ー>ユーザーフォーム 新しいUserFormが現れる. タイトルバーにUserForm2と書かれている.
(3/4) Interface of Visual Basic Editor Code/Form Switch Run Pause End Project Explorer UserForm Window Property Window Control Tool Box
(4/4) Design of Form & Code VBプログラムはFormとCodeという二つの部分から成り立っている.プログラムを設計する時は,各々を設計しなければならない. UserForm Code
Formの設計 Formにコントロールを置く コントロールのPropertyを設定する (1/8) Design Form Formの設計 Formにコントロールを置く コントロールのPropertyを設定する
ツールボックス中に,たくさんのコントロールがある. 計算するプログラムを作るとき,よく使用するのは,次の四つのコントロールである. (2/8) Control in ToolBox ツールボックス中に,たくさんのコントロールがある. 計算するプログラムを作るとき,よく使用するのは,次の四つのコントロールである. Label TextBox ScrollBar CommandButton Formをクリックすると,ツールボックスが現れる.ツールボックスが現れない場合は,上のツールバー中の ボタンを押すと,それが現れる.
(3/8) Property Window Formの中に.あるコントロールを置く.このコントロールをクリックすると.左下のProperty Windowに,このコントロールについてのPropertyが表示される. Property Window 右クリック メニュー Property Windowが表示されない場合,コントロールを右クリックして, [プロパティ]を選択すると, Property Windowが現れる.
(4/8) Property of Control Caption (オブジェクト名) Font Top Width CommandButton Left Height BackColor ForeColor Visible コントロールには,たくさんのpropertyがある.
(5/8) Edit the Property Formの中に.コントロールをクリックして,左下のProperty Windowに,左列のPropertyをクリックして,そして右の枠で,コントロールについてのPropertyが入力できる. ①クリックする ②クリックする ③新しい文字を入力する
(6/8)Change the Property Propertyの設定は, 編集するとき手作業で設定できる. 実行するときコードで変更できる. 編集時 実行時
(7/8) Click the Control クリックの仕方による,作業の違い クリックの仕方による,作業の違い 一回クリックすると.コントロールが選択される.Property Windowで,そのコントロールのPropertyを設定できる. ダブルクリックすると.コントロールについてのCodeが現れ る.Formに戻りたい場合は,左上のswitchを使う. 右クリックすると,メニューが現れる. [プロパティ]又は[コードの表示]を選択できる. 一回クリックして,もう一回クリックすると, LabelとCommandButtonの場合は,表の文字 を編集できる.(推奨できない.コントロールの 外で一回クリックして,編集を取消す)
(8/8) Draw the Interface コントロールを載せる前に,Formをクリックして,そのPropertyのFont中のSizeを16 に設定する.以後,置かれたコントロールでは,FontのSizeが自動的に16に設定される. ①クリックする ②クリックする ③クリックする ④クリックする
(8/8) Draw the Interface Formに,コントロールをのせて,文字を変えて,右下のインタフェイスを作る. Formに,コントロールをのせて,文字を変えて,右下のインタフェイスを作る. Label,CommandButton上の文字はCaptionのPropertyである TextBox中の文字はTextのPropertyである
あるコントロールをダブルクリックすると,CodeのWindowが現れる.このコントロールについてのCodeを編集できる. (1/4) Code of Control あるコントロールをダブルクリックすると,CodeのWindowが現れる.このコントロールについてのCodeを編集できる. ①ダブルクリックする ②コードが現れる
(2/4) Code of CommandButton1 CodeのWindowの中に,次のコードを入力. Dim a As Single Dim b As Single Dim s As Single Dim d As Single Private Sub CommandButton1_Click() a = Val(TextBox1.Text) b = Val(TextBox2.Text) s = a * b d = Sqr(a * a + b * b) TextBox3.Text = s TextBox4.Text = d End Sub 変数宣言 値を取得する 入力する時,大文字と小文字を区別しない.数式中のスペースを入力しなくてもよい.自動的に直される. 値を計算する 値を表示する
Formに戻って,Exit ボタンをダブルクリックして,次のCodeを入力する. (3/4) Code of Exit Button Formに戻って,Exit ボタンをダブルクリックして,次のCodeを入力する. Dim d As Single Private Sub CommandButton1_Click() a = Val(TextBox1.Text) b = Val(TextBox2.Text) s = a * b d = Sqr(a * a + b * b) TextBox3.Text = s TextBox4.Text = d End Sub Private Sub CommandButton2_Click() End ①ダブルクリックする ②コードを入力する. これで,このプログラムの作成ができた.
(4/4) Run the Program ツールバー中の三角 をクリックして,プログラムを実行する. ツールバー中の三角 をクリックして,プログラムを実行する. 20 30 40 30 600 1200 36.05551 50 Calculateボタンをクリックすると,計算が行われ,結果が表示される.新たに,a と b の数値を入力して,もう一度計算すると,それらの数値に対応した結果が表示される. Exitボタンをクリックすると,プログラムが終了する.
VBプログラムの設計とは,Form と Code の二つの部分である. これは,VBの考え方である. Method of VB VBプログラムの設計とは,Form と Code の二つの部分である. これは,VBの考え方である. コントロールを Formに置く. コントロールで イベントがおきる. コントロールの Property を設定する 作業する (計算ー>結果表示) Form Code
新しいユーザーフォームを挿入して,次のプログラムを作る. 立方体の長さと広さと高さを入力して,体積と表面積を計算するプログラム Exercise Problem 1 新しいユーザーフォームを挿入して,次のプログラムを作る. 立方体の長さと広さと高さを入力して,体積と表面積を計算するプログラム
SUM=13+23+33+...+n3 上式のような計算を行うプログラムを作る. インターフェイスは下図のようにする. (1/4) Example Program 2 SUM=13+23+33+...+n3 上式のような計算を行うプログラムを作る. インターフェイスは下図のようにする. n = ScrollBar Property: Max : 1000 Min : 0
プログラムを設計する前,各コントロールの作業を設計しなければならない. (2/4) Plan of Program n = プログラムを設計する前,各コントロールの作業を設計しなければならない. イベント 作 業 TextBox1の数値が入力されると ScrollBarの値を変える ScrollBarの値が変わると TextBox1の数値を変える Calculateボタンがクリックされると 計算して,結果を表示する. Exitボタンがクリックされると 終了
(3/4) Code of Program Private Sub CommandButton1_Click() n = Val(TextBox1.Text) For i = 1 To n Sum = Sum + i * i * i Next i TextBox2.Text = Sum End Sub Private Sub CommandButton2_Click() s = MsgBox("Are you sure to quit?", vbOKCancel) If s = 1 Then End Private Sub ScrollBar1_Change() TextBox1.Text = ScrollBar1.Value Private Sub TextBox1_Change() ScrollBar1.Value = Val(TextBox1.Text) n =
(4/4) Run the Program n = n = n = 数値を入力の替わりに,ScrollBarをスクロールして,nの値を変化させることができる. Exit ボタンがクリックされたあと,Dailogが出て来る,OKをクリックすると,終了する.
More Function of VB VBA の機能に制限がある. VBでは,PictureBoxとTimerというコントロールを使って,図表や動画などが作れる. VBを使うと,上図のようなリアルタイムの結果表示もできる. VBを使うと,独立の*.exeファイルを作成できる.
VBA in Excel Excel では,簡単な関数計算や関数グラフ作成ができる.しかし,∑Sin(nx),定積分などの計算は,直接できない. Excel では,VBAを使うことで,複雑な関数の計算,グラフ作成などの作業ができる. これから ExcelでのVBAの応用 について紹介する. Excel Visual Basic 応用 VBA 基礎 基礎
(1/7) Add the ToolBar Excelで,VBAを使うために,ツールバーの追加が必要. 使いやすくするため,それらをツールバーに並べる. ①右クリックする ③移動する ②選択する
ワークシートをUserFormとして使う. その中に,コントロールを置いて,Formの設計ができる. (2/7) Use Sheet As Form ワークシートをUserFormとして使う. その中に,コントロールを置いて,Formの設計ができる. ツールバーのコントロールボタンをクリックすると,小さいツールボタンが現れる.同じボタンがあるので,これを消してもよい.
(3/7) Edit the Property of Control コントロールを右クリックして,[プロパティ]を選択すると,PropertyのWindowが現れる.そこで,コントロールのPropertyの編集ができる.
(4/7) Edit the Code コントロールをダブルクリックすると,EditorのWindowが現れる.ここで,そのコントロールのコードを編集できる. タスクバーで,Excelを選択すると,Form編集ができる. Form編集 Code編集
(5/7) Edit & Run 先ほどの小さいボタンが,Down(押されたまま)の状態だったら,編集状態である.コントロールの編集,調整,コード編集などができる. ボタンがUp(押されていない)の状態だったら,実行状態である.コントロールをクリックすると,コードの内容を実行する.
(6/7) Cells(Row, Column) Excelで,VBAのプログラムを設計する時,TextBoxとLabelの替わりに,Excelのセルを利用できる.Cells(Row,Column)のふうに使われる. x = Cells(1, 2) Cells(3, 2) = x * Sin( x ) Cells(1,2) Cells(3,2)
(7/7) Example Program 3 Cells(1,2) Cells(3,2) ① ダブルクリックする ②コードを入力する Private Sub CommandButton1_Click() x = Cells(1, 2) ‘ n = Val(TextBox1.Text) Sum = x * Sin( x ) Cells(3, 2) = Sum ‘ TextBox2.Text = Sum End Sub ②コードを入力する 実行状態にする.ボタンをクリックすると,結果がB3に現れる. B1に数値を再入力して,Enterキーを押して,ボタンをクリックすると,新しい結果が現れる.
Exercise Problem 3 同じワークシートで,他のボタンを作って,次の計算を行うプログラムを作る. 同じワークシートで,他のボタンを作って,次の計算を行うプログラムを作る. 1.円柱の高さと底面半径を入力して,体積と表面積を計算するプログラム. 2. 次式の結果を計算するプログラム.
(1/4) Draw the Graph Excelにおける,関数グラフの描き方 *数式により,横座標に対応する,縦座標を計算する. *数式により,横座標に対応する,縦座標を計算する. *Excelの図表作成機能を使って,グラフを作る. f(8) y = f (x) f(7) f(4) f(3) f(2) f(1) f(0) 0 1 2 3 4 5 6 7 8
(2/4) Think About the Graph a.VBAプログラムによって,セルに書き込める. Cells(x,y)=a b.繰り返し文によって,多くのセルに書き込める. For-Next などの繰り返し文 c.多くのセルの値によって,Excelで図表作成できる. このように考えると,Excelで,VBAを使って,グラフを作成できそうなことが分かる.
VBAを使って,グラフを描くときの手順を以下に示す. ①プログラムによって,セルに値を書き込む. ②手作業で,セルを選択して,グラフを作る. (3/4) Create the Graph VBAを使って,グラフを描くときの手順を以下に示す. ①プログラムによって,セルに値を書き込む. ②手作業で,セルを選択して,グラフを作る.
(4/4) Flow Chart of Program 係数を読込み(あれば) Xに初期値を与える Yの値を計算する X,Yの値をセルに書込み Xに微小の量を足す Xの値が制限を超えない -> 終了 この中に,複雑な計算が行う
Y=Sin(a*x) のグラフを描く. Sheet2に移す.セルに文字を入れて,ボタンをのせる. (1/6) Example Program 4 Y=Sin(a*x) のグラフを描く. Sheet2に移す.セルに文字を入れて,ボタンをのせる. ここに数値を入れよう
(2/6) Code of Example Program 4 Private Sub CommandButton1_Click() a = Cells(4, 5) Row = 1 x = 0 st: y = Sin(a * x) Cells(Row, 1) = x Cells(Row, 2) = y x = x + 0.05 Row = Row + 1 If x <= 6.3 Then GoTo st End Sub ボタンをダブルクリックして,コードを入力する.
ボタンをクリックして,実行状態にする. CommandButtonをクリックすると,セルに数値が入る. (3/6) Run the Program ボタンをクリックして,実行状態にする. CommandButtonをクリックすると,セルに数値が入る.
(4/6) Select the Cells A1セルをクリックして,Ctrl と Shift キーを押したまま,方向キー → を押して,そして ↓ を押すと,数値が全部選択される.そして右側のScrollBarを使って,シートの上端に戻る. ① A1セルクリックする ② Ctrl と Shift → ↓ を押す ③ScrollBarを上端に移動する
次に図表ボタン をクリックして,散布図を選択する.三番目の線あり点なしの形式を選択して,関数のグラフを得る. (5/6) Draw the Graph 次に図表ボタン をクリックして,散布図を選択する.三番目の線あり点なしの形式を選択して,関数のグラフを得る.
(6/6) Change the Efficient aの値を再入力して,Enterキーを押して,ボタンをクリックすると,グラフも自動的に変わる.
(1/4) Think About Improvement セルを クリックする 数値を 入力する Enter を押す ボタンを クリックする 今の操作が面倒だから,ScrollBar を利用できるようにする. Buttonがクリックされる. セルの値を読込む 作業をする ScrollBarが移動 ScrollBarの 値をセルに書込む セルの値を読込む 作業をする
ScrollBarをのせて,右クリックすると,PropertyのWindowが現れる.Min: 1,Max: 20 と設定する. (2/4) Use the ScrollBar ScrollBarをのせて,右クリックすると,PropertyのWindowが現れる.Min: 1,Max: 20 と設定する. ① ダブルクリックする ②ScrollBarを作る ③右クリックする ④[プロパティ]を選択する ⑤Propertyを編集する
(3/4) Code of ScrollBar ScrollBarをダブルクリックすると, ScrollBarのCodeが現れる.その上のCommandButton1中のコードをコピーして,ScrollBar1のコードの中に貼り付ける.そして,一行目を入力する. Private Sub CommandButton1_Click() a = Cells(4, 5) Row = 1 x = 0 st: y = Sin(a * x) Cells(Row, 1) = x Cells(Row, 2) = y x = x + 0.05 Row = Row + 1 If x <= 6.3 Then GoTo st End Sub Private Sub ScrollBar1_Change() Row = Row + 1 If x <= 6.3 Then GoTo st End Sub Private Sub ScrollBar1_Change() Cells(4, 5)=ScrollBar1.Value a = Cells(4, 5) Row = 1 x = 0 st: y = Sin(a * x) Cells(Row, 1) = x Cells(Row, 2) = y x = x + 0.05 ①コードをコピーする. ③コードを入力する ②コードを貼り付ける
実行状態にして, ScrollBarを移動すると,グラフが自動的に変化する.前より,便利になる. (4/4) Run the Program 実行状態にして, ScrollBarを移動すると,グラフが自動的に変化する.前より,便利になる.
次のグラフをかくプログラム.(下図が完成図【参考用】) Exercise Problem 4 次のグラフをかくプログラム.(下図が完成図【参考用】)
Save the File VBでは,作ったプログラムは,独立のファイルだから,vbp,frm等の形式で保存される.exeファイルの作成もできる. VBAでは,Excelファイル中に,プログラムを作ったら,そのプログラムがExcelファイルの一部として存在する.つまり,Excelファイルを保存すると,そのプログラムも一緒に保存される. Visual Basic VBA in Excel *.vbp *.frm *.xls (VBA)
Open the File VBAのプログラムを含んでいるファイル(doc,xls etc.)を開くとき,次のダイアログが現れる.
(1/4)Comparision of Program Basic Fortran C ... VB VF VC Formあり Formなし VBを薦める理由: ①将来,積分及び∑計算,図表製作の機会がある. ②分かりやすいから,学びやすい. ③手に入れやすい(Officeに付属している.) . ④Wordなどのソフトで,マクロの高級な操作ができる. ⑤対象プログラムである.これを基礎として,他のソフト にも使える.
(2/4) Object Programming VBプログラムの設計とは,Form と Code の二つの部分である.各々のコントロールについて,Propertyを編集して,コードを書く,互いに制御する.これは,対象プログラムの考え方である. Private Sub ScrollBar1_Change() TextBox1.Text = ScrollBar1.Value End Sub Private Sub TextBox1_Change() ScrollBar1.Value = Val(TextBox1.Text) End Sub Private Sub CommandButton1_Click() n = Val(TextBox1.Text) For i = 1 To n Sum = Sum + i * i * i Next i TextBox2.Text = Sum End Sub Private Sub CommandButton2_Click() s = MsgBox("Are you sure to quit?", vbOKCancel) If s = 1 Then End
(3/4) Applications of Object Programming 対象プログラムの考え方が理解できると,他のソフトを理解する手助けになる.たとえば、Visual FoxPro,PowerBuilderなどのデータベース処理のソフトである. SIEMENSには,WinCC(Windows Control Center)という工業自動制御ソフトがある.それを使用する際,生産制御のパソコン画面を設計する必要がある. 電気専門とコンピュータ専門の業者は生産プロセスが分かっていない可能性が高い.そこで、化学工業技術者が自分の手で画面設計できることが望ましい.その画面設計は対象プログラムの延長上にある.
(4/4) Panel of Control System PLC 64 ℃ 20 % VIA001 Temperature Steam Valve Water Level: FULL Water Valve: CLOSE OPEN CLOSE クリックされると VIA001=1 クリックされると VIA001=0
Computer is a Tool コンピューター言語は,計算の道具にすぎない. プログラムを書く上で,より重要なことは,その内容である. 数値計算において,言語より計算の作動原理が大切で,難しい. それに注意力を向けることが重要である. 実際応用 計算 原理 原則 コンピューター言語
Self-introduction 私は劉 建華と申します. 出身地は中国の東北地区の遼寧省です. 2000年北京理工大学を卒業しました. 私は劉 建華と申します. 出身地は中国の東北地区の遼寧省です. 2000年北京理工大学を卒業しました. その後二年間化学工業会社で働きました. 2002年10月日本に来ました. 一年間日本語学校で勉強しました. 2003年10月研究生として九州大学に入りました. 2004年3月修士として入学しました. どうぞよろしくお願いします.
Copyright (C) 2004 Liu Jianhua Acknowledgments このスライドは下記のアドレスに掲載しております. http://www.geocities.jp/zz961jp/lesson.htm 機械航空工学科の藤野さんから,スライドの校正していただき ました.また,四講座の方々に御協力をいただきました.そし て,機械学科の坂口先生に,ビデオ設備を貸していただきまし た,みなさまのお力を借りて,講座を行うことができました. 若輩者の私に,今回の講座を担当することをお許しいただい た,松隈先生に心からの感謝を申し上げます.私にとって,かけ がえのない経験になりました. 最後に御清聴いただいた皆々様,どうもありがとうございまし た! Copyright (C) 2004 Liu Jianhua