• 検索結果がありません。

ケミカルエンジニアのためのExcelを用いた化学工学計算法

N/A
N/A
Protected

Academic year: 2021

シェア "ケミカルエンジニアのためのExcelを用いた化学工学計算法"

Copied!
53
0
0

読み込み中.... (全文を見る)

全文

(1)

Font などを変更する。BackColor の変更の際は、選択し、パレットを選び、そのなかから色 を選択する。 オブジェクト名 cmdColorAdd BackColor Caption 答の強調 Font 14 プロパティの変更後、その「コマンドボタン」を再度、右クリックし、「コードの表示」を選 択する。プログラムコードが現れる。

3.3 コンピュータ関連の資格

資格試験などの有益な情報も、インターネットのサイトから調べることができる。 情報処理技術者 http://www.jitec.jp/ FE試験資料 http://www.jpec2002.org/index_j.html FE 試験 について見てみましょう。これは、アメリカのオレゴン州で始まった技術者 個人の認定資格ですが、今は国際標準になりつつあります。内容は基本的なことですが、す べて英語で試験が行われるので、英語での技術の勉強が大切です。一例をテキストから引用 して示します。

出典 FE Review manual , M.R.Lindeburg, Professional Publications,Inc.(2002) コンピュータ関連の例題 Sample problems

(2)

1. What is the binary (base-2) representation of (135)10? (A) 101111010 (B) 010111101 (C) 010000111 (D) 101111001 Solution: (135)10= 1×2 7 2)135 + 0×26 2) 67 1 + 0×25 2) 33 1 + 0×24 2)16 1 + 0×23 2) 8 0 + 1×22 2) 4 0 + 1×21 2) 2 0 + 1×20 1 0 (135)10= 10000111 [ same as 010000111 ] Answer is C.

2. What is the base-10 equivalent of the binary number

0101110? (A) 18 (B) 30 (C) 46 (D) 47 Solution: 0×26 + 1×25 + 0×24 + 1×23 + 1×22 + 1×21 + 0×20 = 46 Answer is C.

(3)

3. What is the octal (base-8) equivalent of the binary number (1101101)2? (A) (109)8 (B) (155)8 (C) (550)8 (D) (660)8 Solution:

Since 8 = 23, separate the bits into groups of three bits, starting with the least significant bits. Add leading zeros if necessary for consistency.

001 101 101

Convert each group of three bits into its octal equivalent.

001 101 101 (1)8 (5)8 (5)8

The octal equivalent is 155. Answer is B.

4. What operation is typically represented by the following program flowchart symbol?

(A) input-output (B) processing (C) storage (D) branching

Solution:

Branching, comparison, and decision operations are typically represented by the diamond symbol. Answer is D. 情報処理技術者試験では、もう少し踏み込んだ内容で出題されることもあります。 例題 次の数を2進数で表現せよ。 (1) 2,4,8,16 [解] 2=21 10

(4)

4=22 100 8=23 1000 16=24 10000 (2) 2 1 , 4 1 , 8 1 , 16 1 [解] 2 1 =2-1 0.1 4 1 =2-2 0.01 8 1 =2-3 0.001 16 1 =2-4 0.0001 例題 次の10進数のうちで、2進数に変換した時に、正確に表現できないものはどれか。 (1) 0.05 (2) 0.125 (3) 0.25 [解] 10進数を2進数へ変換する時に、有限けた(コンピュータでは数字を表現するけた 数が限定されている。)の2進数に正確に変換できない場合がある。前例題からもわかる ように、2進数の重みが、2-1 ,2-2,2-3.2-4 となっており、10真数の小数をこれらの和で表し ているので、これらの組み合わせ以外の小数は正確に表現できない。 (1) 0.05 0.0000110001100011 (2) 0.125= 8 1 0.001 (3) 0.25 = 4 1 0.01

3.4 単位換算とプログラム

今まで皆さんは、SI 単位系(国際単位系、N;ニュートンや Pa;パスカルなど)を主に使用 して学習してきました。日常生活でも天気予報では、低気圧の圧力を hPa(ヘクトパスカル) という SI 単位で表しています。ところが、エンジニアとして仕事をする場合、他の単位系に 出会うこともしばしばあります。エンジニアでなくても、アメリカで生活するだけでも°F (華氏)で温度を表していますので、単位系の知識や換算する能力も必要となります。また、 グローバルな(国際的な)資格として認知されつつある FE 試験などもアメリカの単位系で試 験問題が出題される場合もありますので、ここで簡単に説明してみましょう。

(5)

仕事では色々な単位を使用するので、Web上にそれらを換算するためのサイトなども多く 作られています。例えば、キーワードとして、Btu ジュール 単位換算などとして検索する とhttp://www.elepop.net/henkan/shigoto.htm http://www.ardre.com/application/si_unit_convert.php?mod=7 などのサイトが見つかります。一度 使ってみて下さい。換算数値を探す場合、Webサイトとしてフリー百科事典『ウィキペディ ア』http://ja.wikipedia.org/wiki/ なども便利です。参考までに単位換算表の例を以下に示しま す。 (以下の換算表は、 化学機械の理論と計算 、亀井三郎編、産業図書(1990)より引用) このような表の使い方は簡単です。例えば1inch(in);インチが何センチなのかを調べるに は、まず、表の上欄の inch(in)を探し、そのカラム(列)の数値の中から「1」を探します。 次に、表の上欄の cm;センチメートルを探し、そのカラム(列)で、inch(in)のカラム(列) の「1」の行にある数値(ここでは、2.540)を探します。この数値を inch(in)単位で表され た数値にかければ、その値を cm 単位に変換できます。他の単位、数値についても同様です。 長さ以外にも重さを表す重さを表す lb (ポンド;1ポンドは 0.4536kg) 、体積を表すgal (ガ ロン;1ガロンは 0.003785 m3 )、エネルギーを表すB.t.u (英熱量単位ビーティユ;1ビーテ ィユは 252.0 cal=1.055 × 103 J) についても換算表を使えるように練習しましょう。 摂氏(ファーレンハイト[°F ])と華氏(セルシウス[℃])で表された数値f,cは、次の 式で変換できます。

(6)

32 5 9 32 100 180 + × = + × = c c f まず、温度に関してよく聞く素朴な質問を見てみましょう。 温度に関してよく聞く素朴な質問 Ii)海外から入ってきた単位をなぜ摂氏とか華氏とかの漢字で書くのか? ii) 水の沸点は 100℃ではないのですか。

iii) 華氏は何をもとに考案されたのでしょうか。 iv) 華氏の0°F は何を表しているのですか。 v) 華氏では、水の融点と沸点をなぜ 180 等分しているのですか。 vi) アメリカ人は°Fしか使わないのですか。 インターネットを用いて、調べてみましょう。 デスクトップ画面の左下のスタートボタンを下図のようにクリックし、各表示にポイントし て<Netscape Navigator>をクリックします。 スタートボタンをクリックし、<プログラム(P)>→<Internet Tools>→

<Netscape Communicator>→の順にポイントして、<Netscape Navigator>をクリック する。 起動したら、Yahooのホームページhttp://www.yahoo.co.jp/ を利用して、「温度 摂氏(セッ シ)」をキーワードとして検索してみましょう。 検索結果の一例を以下に示します。

温度(摂氏・華氏)換算 (Farenheit = Celcius)

温度変換プログラム;摂氏と華氏を変換。JavaScript。 ... JavaScriptです。 摂氏から華氏へ 華氏から摂氏 へ 入力 摂氏(°℃) 華氏(F) 出力 華氏(F) 摂氏(°℃) Back to top/index/home ... http://domuskom.vis.ne.jp/temp0001.html - 4k - キャッシュ [domuskom.vis.ne.jpから検索]

温度変換フレーム

華氏 [Fahrenheit] → 摂氏℃ [Celsius] 摂氏℃ [Celsius] → 華氏 [Fahrenheit] Yahoo! Weather Enter City or Zip Code: Your weather and... Maps Weather Video Weather Nearby Locations Inside

http://www1.ocn.ne.jp/ lckariya/thermoframe.htm - 33k - 2005 年 2 月 11 日 - キャッシュ

華氏の基はなに?

おしえて潤・52 投稿者 クレイマーさん 前から不思議に思っていたのですが、温度を測るのになんで ... 色々な温度を摂氏と華氏で示してみたいと思います。 ... 1701-1744年) が定めました。 セルシウス温度、 摂氏と呼ばれま す。 degree、centigrade とも ... http://homepage2.nifty.com/osiete/s752.htm - 17k - キャッシュ [homepage2.nifty.comから検索]

華氏摂氏温度換算表

アメリカはノースカロライナ、シャーロット近郊に在住に主婦みずきの生活体験と情報のページです。このペー ジではアメリカで使う華氏の温度についてご紹介 ... 華氏摂氏温度換算表 摂氏と華氏の温度換算表で

(7)

す。 ゜F ℃ ゜F ... http://www.ncwind.net/faq/ondo_hyo.html - 14k - キャッシュ [www.ncwind.netから検索] まず、「華氏の基はなに?」を見てみましょう。 華氏(Fahrenheit scale)というのは、1715年頃にドイツの物理学者ガブリエル・ファ ーレンハイト(Gabriel D. Fahrenheit;この人名が中国で「華倫海」と音訳された)によっ て考案されました。摂氏は、スウェーデンのセルシウス(Celsius, Anders、1701∼1744)が、 1742年に、水の氷点(融点)を 0、沸点を 100 として、それを 100 等分して温度目を定 めたものです。後に、大気圧の変化で水の氷点、沸点が変化することから、1気圧のもとで 測定した値を用いるように改めました。 さらに、1990 年に国際度量衡委員会により、セル シウス温度は次に述べる絶対温度Tを用いて、 t=T−273.15 と定義されました。 この温度目盛りでは、水の沸点は標準気圧(101325Pa)下では、100 とは ならず、約 99.974℃です。氷点0度(摂氏)とは華氏32度にあたり、沸点摂氏約 100 度を 華氏では、212 度の目盛りに定めています。 温度(摂氏・華氏)換算 (Farenheit = Celcius) 換算のための数値はこのような数表から調べればよいので、すべての数値を覚える必要は ないでしょう。しかし、inch、feet、gal、B.t.u. などの単位についても日常生活で、ニュース などに出てくることがあります。どの程度の数値であるかは知っておいた方がいいでしょう。 また、温度や圧力についても工業ではよく使用するので、実際に換算してなれておく必要が あります。 例題 有効数字に注意して、次の単位の換算を行え。 (1) 1.50×103 in -Æ 1.50×103×2.540 = 3.81×103 cm (2) 10.0 ft -Æ 10.0×0.3048 = 3.05 m (3) 9.6×10 °F -Æ (96 32) 3.6 10 9 5 × = − × ℃ (4) 25.00 ℃ -Æ 25.00 +273.15 = 298.15 K (5) 4.80 ×103 cal -Æ 4.80×103 ×4.186=2.01×104 J (6) 4.50 B.t.u. -Æ 4.50×2.520×102=1.13×103 cal (以下の換算表は、 化学機械の理論と計算 、亀井三郎編、産業図書(1990)より引用)

(8)
(9)

問 次の単位の換算を行え。 (1) 20 in ‒ Æ cm (2) 100 mile/hr Æ km/hr (3) 0 °F -Æ ℃ (4) 100 ℃ -Æ K (5) 1.50 ×103 kWhr -Æ J (6) 1 B.t.u -Æ cal 配布されたファイルまたはフォルダー(ここでは「化工プロ三島」)の内容ならびに動 作確認を行いましょう。 1) デスクトップ上の「化工プロ三島」)フォルダーをクリックしてフォルダーを開く。 2) フォルダー内に保存されている Excel などのプログラムのアイコンを確認する。 3) 例として、「長さ変換 Excel 関数.xls」および「長さ変換 VBex1_0_1.xls」のプログ ラムを操作してみよう。まず、フォルダー内から「長さ変換 VBex1_0_1.xls」のプ ログラムファイルのアイコンを見つけだし、クリックする。 4) セキュリティの調整

この Excel ファイルはマクロ(Visual Basic プログラム)を含んでいるので、 総合情報処理センターのセキリティの設定では操作確認できないので、コマン ドバーの中のツールをクリックする。ツールの中に、「マクロ」「セキュリティ」 があるのでこれを選択する。セキュリティのレベルが「最高」に設定されてい るので、これを「中」のレベルを選択して、セキュリティを調整する。調整後

(10)

「長さ変換 VBex1_0_1.xls」のプログラムを一度終了するために、タイトルバ ーのX印をクリックする。 再度、「長さ変換 VBex1_0_1.xls」のプログラムのアイコンをクリックしてプログ ラムを起動する。 起動時に、「マクロを無効にするか、有効にしますか」聞かれるので、「マクロ 有効にする」ボタンをクリックして選択する。 起動に成功すると下記の画面が現れる。ここでは、表計算ソフト Excel の Sheet1 に長さの変換に必要な数値が記述されている。 5)計算プログラム本体は、マクロ(Visual Basic エディタ)にて標準モジュール に記述している。Excel の「Sheet1」の画面にあるコマンドバーの中から「ツー ル」をクリックし、その中の「マクロ」、「マクロ」をポイントする。下図のウ ィンドウが現れるので、「編集」を選択し、Visual Basic エディタの画面を表示 する。

(11)

コード

Sub convert_ex1_0_1() Dim n As Integer Dim x(10) As Double Dim factor(10) As Double n = 5 ' factor(i) の読み込み セル"E5∼E9";(5,5)∼(9,5) For i = 1 To n factor(i) = Cells(4 + i, 5) Next i ' 変換する数値 の読み込み セル"B5 ;(5,2) x(1) = Cells(5, 2).Value ' factor(i) を用いた数値の換算 For i = 2 To n x(i) = factor(i) * x(1) Next i ' x(i) =factor(i)*x(i) の書き込み セル"B6∼B9";(6,2)∼(9,2) For i = 2 To n

(12)

Cells(4 + i, 2).Value = x(i) Next i End Sub 6) プログラムを実行するには、計算プログラム本体の書かれた Visual Basic エデ ィタのウィンドウから実行ボタンをクリックする。 これらのプログラムを参考に、ウェブサイトで見たような、インターネット上で単位換算 を行うプログラム(Web または Net)を自作してみましょう。Net プログラムを作成す る前に、以下の例題などを参考に VB を用いて、スタンドアローン(ネット上ではなく各自 のコンピュータで動作する)形のプログラムを作成してみて下さい。 例題1 「長さ変換 Excel 関数.xls」および「長さ変換 VBex1_0_1.xls」のプログラムを参考 にして、「長さ変換 VBex1_0_1.xls」の Sheet1 に「換算の開始」というボタンを張り付け、オ ペレータがそのボタンをクリックすると VB のコードを実行して計算結果を表示するような プログラム「長さ変換 VBex1_0_2.xls」を作成してみよう。 (この例題のねらい;ワークシートからVBコードを実行するボタンを作る。)

[解] 「長さ変換 VBex1_0_1.xls」の Excel プログラムを呼び出し、Sub convert_ex1_0_1() を Sub convert_ex1_0_2()と書き換えます。次に、Excel の Sheet1 のコマンドバーから「ファイ ル」を選択し、「名前を変えて保存」を選択する。名前を「長さ変換 VBex1_0_2.xls」に変更 して保存する。

Excel の Sheet1 のワークシートに、マクロを起動するコマンドボタンを張り付けるには、 下図のように、Excl の sheet1において、コマンドバーの「表示」をクリックし、「ツールバ ー」の中の「フォーム」を選択する。

(13)

「表示」、「ツールバー」の中の「フォーム」を選択すると、下図のようなファームが sheet 上に現れます。 この中のボタンをクリックし、ボタンを貼り付ける位置で再度クリックし、 そのままドラッグすることで、ボタンを大きさと位置を決めると、下図のようなボタン1が 表示され、同時に次に示す「マクロの登録」のウィンドウが現れます。 「マクロの登録」のウィンドウでは、まず、マクロ名でボックスに表示された使用したいマ クロ(VB コード、ここでは、作成された convert_ex1_0_2)を選択し、OK ボタンをクリッ クする。

(14)

次にエクセルの sheet にもどり、貼り付けた「ボタン1」をクリックして、表示を適当なも の(ここでは、「換算の開始」)に書き換えます。エクセルの sheet に貼り付けたこの「ボタ ン1」(「換算の開始」)をクリックすると計算コード convert_ex1_0_2 が起動します。 例題2 「長さ変換 Excel 関数.xls」および「長さ変換 VBex1_0_1.xls」のプログラムを参考 にして、「長さ変換 VBex1_0_2.xls」の Sheet1 に「換算の開始」と併せて「結果の削除」とい うボタンを張り付け、オペレータがそのボタンをクリックすると VB のコードを実行して表 示した計算結果を削除するようなプログラム「長さ変換 VBex1_0_3.xls」を作成してみよう。 (この例題のねらい;マクロを記録して、それを実行するVBコードを作成し、その実行ボ タンも作る。)

[解] 「長さ変換 VBex1_0_2.xls」の Excel プログラムを呼び出し、Sub convert_ex1_0_2() を Sub convert_ex1_0_3()と書き換えます。次に、Excel の Sheet1 のコマンドバーから「ファイ ル」を選択し、「名前を変えて保存」を選択する。名前を「長さ変換 VBex1_0_3.xls」に変更 して保存する。 Excel の Sheet1 のワークシートにおいて、作成した「換算の開始」ボタンをクリックし てセルB6∼B9に予め計算結果を表示する。(後ほど、この数字を削除する動作をマクロ; VB コードに記録する。) Excel の Sheet1 のワークシートに、セルの値を消すマクロ(VB コード)を標準モジュールに作成し、それを起動するコマンドボタンをワークシートに張り 付けるには、まず、下図のように、Excl の sheet1のワークシートにおいて、コマンドバーの 「ツール」をクリックし、「マクロ」の中の「新しいマクロの記録」を選択する。

(15)

「新しいマクロの記録」を選択すると、下記のような「マクロの記録」ウィンドウが現れる ので、マクロ名「Macro1」をクリックして、適当な名前(ここでは「ResetCalc1」)に変更す る。 マクロの保存先は作業中のブックのままでよい。確認後、OK をクリックする。 マクロの記録が始まると、次のようなボタンが現れる。このボタンは、マクロの記録を終了

(16)

する時にクリックする「記録終了」ボタンです。 マクロの記録終了ボタン 「記録終了」ボタンが現れたら下図のように削除したいセルをクリック、ドラッグし反転 する。キーボードの中から「Delete」を探し、そのキーを押す。これで必要なマクロは記録 されたので、「記録終了」ボタンをクリックする。記録されたマクロは、Excel のワークシー トの「ツール」をクリックし、「マクロ」の中の「マクロ」を選択し、先ほど作成したマクロ 記録(VBコード)「ResetCalc1」を選択することで編集できる。

記録の終了

マクロの記録 記録されたマクロ(VB コード) Sub ResetCalc1() '' ResetCalc1 Macro ' マクロ記録日 : 2005/3/21 ユーザー名 : Mishima

(17)

Application.Run "長さ変換 VBex1_0_3.xls!convert_ex1_0_2" Range("B6:B9").Select Selection.ClearContents Range("F6").Select End Sub Excel の Sheet1 のワークシートに、マクロを起動するコマンドボタンを張り付けるには、 前述の例題のように、Excl の sheet1において、コマンドバーの「表示」をクリックし、「ツ ールバー」の中の「フォーム」を選択する。既に、「フォーム」のツールボックスが表示され ている場合、この操作は不要です。 「表示」、「ツールバー」の中の「フォーム」を選択すると、下図のようなファームが sheet 上に現れます。 この中のボタンをクリックし、ボタンを貼り付ける位置で再度クリックし、 そのままドラッグすることで、ボタンを大きさと位置を決めると、下図のようなボタン1が 表示され、同時に「マクロの登録」のウィンドウが現れます。

(18)

「マクロの登録」のウィンドウでは、まず、マクロ名でボックスに表示された使用したいマ クロ(VB コード、ここでは、作成された「ResetCalc1」を選択し、OK ボタンをクリックす る。 次にエクセルの sheet にもどり、貼り付けた「ボタン1」をクリックして、表示を適当なも の(ここでは、「結果の削除」)に書き換えます。エクセルの sheet に貼り付けたこの「ボタ ン」(「結果の削除」)をクリックするとセル内の数字を削除する「ResetCalc1」が起動します。 例題3 VBScript を用いて、長さの単位換算を行う Web プログラムを動かしてみよう。 [解]作成した画面とコードを下記に示します。入力の下の□に数値を入力して、画面左下 のボタン「変換」をクリックします。

(19)

この注意がでたらここをダブル クリックして、制限を解除して 下さい。 この部分に換算したい長さを m 単位で入力して下さい。 インチ(in)に変換した数値が 表示される。 内部のコードを表示するには、画面上で右クリックし、ソースコードの表示を選択します。 この場合、次のようなコードが表示されます。 長さ換算のためのコード <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=x-sjis">

<meta name="GENERATOR" content="Microsoft FrontPage 2.0"> <title>uc1 長さ</title> </head> <body> <p><script language="VBScript"> Dim factor(5),inp,inputvalue factor(1) = 1 ' m to m. factor(2) = 39.37007874 ' m to in. factor(3) = 3.280839895 ' m to ft.

(20)

factor(4) = 1.093613298 ' m to yards. factor(5) = 0.00062137119 ' m to mi. Sub Convertform x1=val0.value val1.value=x1*factor(1) val2.value=x1*factor(2) val3.value=x1*factor(3) val4.value=X1*factor(4) val5.value=X1*factor(5) End Sub </script> </p> <h3>長さの変換 m から米単位系[L]</h3> <h3>長さの数値を m 単位で入力してください。</h3> <p>入力値</p> <p>

<input size="16" name=val0> m </p> <p> </p> <p>計算結果<br> </p> <table border="0"> <tr>

<td><input size="16" name=val1></td> <td>m</td>

</tr> <tr>

<td><input size="16" name=val2></td> <td>in</td>

</tr> <tr>

<td><input size="16" name=val3></td> <td>ft</td>

</tr> <tr>

(21)

<td>yd</td> </tr>

<tr>

<td><input size="16" name=val5></td> <td>mile</td> </tr> </table> <table border="0"> <tr> <td align="center"><input type="button" value="換算" onclick="Convertform"></td> </tr> </table> <p> </p> <hr> </body> </html>

(22)

4.Excel から VBA 操作に関する解説

(ユーザーフォームの作成)

Excel の sheet から VBA プログラムを実行するためのプログラム作成方法について解説す る。

1) ユーザーフォームの作成

まず、Excel を起動して、sheet1からユーザーフォームを作成してみよう。

下図のようにメニューバーから「ツール」を選び、「マクロ」、「Visual Basic Editor」をポイン トして選択する。

下図のような Visual Basic Editor のウィンドウが表示されるので、メニューバーの「挿入」か ら、「ユーザーフォーム」を選択する。

(23)

2)オブジェクト名の変更 今追加されたオブジェクトは、「UserForm1」という名のオブジェクトであったので、プロ グラム中で使用する自分で決めたオブジェクト名に変更する。ここでは、「MyForm」と変更 する。変更は、下図のようにプロパティウィンドウで行う。また、 Form の名称も変更できるので、プロパティウィンドウにある Caption をクリックして、 「Form」を「フォーム」に変更する。

「 プ ロ ジ ェ ク ト エ ク ス プ ロ ー ラ に も 「UserForm1」が追加されたことを確認する。 ①プロパティウィンドウの中の (オブジェクト名)をクリックし て、「UserForm1」を「MyForm」 と変更する。さらに、Caption を クリックして、「Form」をフォー ムとする。 3) コントロール(ラベルとコマンド)の貼り付け 追加したユーザーフォームに下図のような2つのラベルと3つのコマンド・コントロール を貼り付けましょう。ラベルを貼り付けるには、ツールボックスの「A」ボタンをクリック

(24)

し、フォーム上の適当な位置でクリック・ドラッグすることで、長方形のラベルを貼り付け ます。もう一度同じ操作をすることで、Label2 も貼り付けます。同様に、コマンドボタンに ついても行います。

4)コントロール(ラベルとコマンド)の変更 貼り付けたコントロール(ラベルとコマンド)のオブジェクト名、キャプション、フォン トを変更します。変更するためには、フォーム上の各コマンド(例えば Label1)をクリック し(ダブルクッリクするとコードがあらわれてしまうので注意)、各プロバティウィンドウの オブジェクト名、キャプション、フォントをクリックして変更します。変更は、下記のよう に行います。なお、ファンドサイズはすべて18とする。 オブジェクト名 キャプション Label1 lblDate 今日の日付は? Label1 lblTime 現在の時刻は? CommandButon1 cmdKakunin 確認 CommandButon2 cmdEnd 終了 CommandButon3 cmdUnload 閉じる 5)イベントプロシージャの作成 実際に、今作成しているフォームを表示して、各ボタンを押した場合に動作するようにイ ベントプロシージャを作成(プログラムコードの記述)しましょう。そのためには、下図の ように作成したコマンドボタン「確認」をクリックした後、プロジェクトエクスプローラの 中に作成した「MyForm」を右クリックします。その中から「コードの表示」を選択します。 選択するとコードウィンドウが表示されるので、下記のコードを記述する。

(25)

記述するコード

Private Sub cmdKakunin_Click() lblDate.Caption = Date lblTime.Caption = Time End Sub コードの記述が終了したら、先ほどと同様に、プロジェクトエクスプローラの中に作成し た「MyForm」を右クリックします。その中から「オブジェクトの表示」を選択することで、 作成中のフォームが現れます。次に「終了」ボタンとクリックし、先ほどと同様に下記のコ ードを記述します。

Private Sub cmdEnd_Click() End

End Sub

さらに、同様にして「閉じる」ボタンに対しても、下記のコードを記述する。 Private Sub cmdClose_Click()

Unload MyForm End Sub このようにして記述したコードはそれぞれのイベントを実行します。 lblDate.Caption = Date lblTime.Caption = Time これらのコードが実行されると、フォームの lblDate と lblTime の貼り付けた位置にその時 の、日付と時刻が表示されます。 End では終了し、Unload MyForm では、その Form を 閉じます。これは、Unload me と記述しても同じ動作(イベント)になります。

(26)

6)ユーザーフォームを表示するマクロの作成 ユーザーフォームを表示するためのマクロを作成するには、まず、下図のように VB エデ ィターの「挿入」をクリックし、「標準モジュール」を選択する。 下記のコードを入力します。 Sub ShowUserForm() MyForm.Show End Sub

ここで作成したオブジェクト ShowUserForm を Excel の sheet から実行するためには、 Excel の sheet 上にこのオブジェクトを呼び出すボタンを貼り付けなければなりません。

7)ワークシートからマクロを起動するボタンの作成

ワークシート上には、マクロを実行するためのボタンを作成することができます。ここで は、前節で作成したオブジェクト ShowUserForm を Excel の sheet から実行するためのボ タンを作成します。

まず、Excl の sheet1にもどり、「表示」をクリックし、「ツールバー」の中の「フォーム」 を選択する。

(27)

「表示」、「ツールバー」の中の「フォーム」を選択すると、下図のようなファームが sheet 上に現れます。 そこで、この中のボタンをクリックし、ボタンを貼り付ける位置で再度クリックし、 そのままドラッグすることで、ボタンを大きさと位置を決めると、下図のようなボタン1が 表示され、同時に次に示す「マクロの登録」のウィンドウが現れます。 「マクロの登録」のウィンドウでは、まず、マクロ名でボックスに表示された使用したいマ クロ(ここでは、前節で作成した ShowUserForm)を選択し、OK ボタンをクリックする。

(28)

次にエクセルの sheet にもどり、貼り付けた「ボタン1」をクリックして、表示を適当なも の(ここでは、「日付と時刻の表示」)に書き換えます。エクセルの sheet に貼り付けたこの 「ボタン1」(「日付と時刻の表示」)をクリックすると作成した ShowUserForm が起動します。 8) 動作確認 完成した sheet とユーザーフォーム このボタンをクリックすると 日付と時刻を示すユーザー フォームがあらわれる。 「確認」ボタンで日付と時刻 が表示される。「終了」「閉じ る」 9)ユーザーフォームの自動起動 今のままでも、sheet 上のボタンからユーザーフォームを起動できますが、Excel の起動時 に ユ ー ザ ー フ ォ ー ム を sheet 上 に 表 示 す る に は ど う し た ら よ い の で し ょ う か 。 Sub WorkBook_Open イベントを利用する方法があります。まず、下図のように VB エディターの プロジェクト・ウイザードの中から「ThisWorkbook」を右クリックし、「コードの表示」を選 択する。

(29)

下図のように(General)が表示されますが、下ボタンを押して、Workbook をクリックし て、Sub Workbook_Open()の Sub プロシージャのコードが現れる。

ここで、End Sub の間に、 「MyForm.show」と入力して、コードを完成させる。

このままでも、Excel の起動時にユーザーフォームを sheet 上に表示することはできるが、 ユーザーフォームが表示されている間は、Excel 上の操作はできません。そこで、ユーザー フォームを表示している間も Excel 上の操作を行いたい場合、次のように「vbModeless」と 指定します。

Private Sub Workbook_Open() MyForm.Show vbModeless

(30)

5. Excel と VBA を用いた対話型プログラム

Excel と VBA を利用した対話型プログラムの作成方法について解説する。 複数のユーザーフォームの利用 1)プログラムの画面の順序 Excel と VBA を利用した対話型プログラムとして、次のような画面からなる「適性判断」 プログラムを作成します。

第1画面 第2画面

「はい」の 「いいえ」 場合の質問 場合の質問

答1 答3 答2 答4 このような順序で画面が表示されます。このプログラムは、複数のユーザーファームを作 成して、そのフォームの表示を切替えているだけなので、主に オブジェクト名.Show と Unload Me” の二つのコマンドで作成できます。

(31)

2)フォームの作成

まず、前節と同様に第1画面のユーザーフォームを作成してみよう。前節で作成した Excel プログラム Show_DateTime_01.xls” のフォームとコードがそのまま利用できるので、Excel プログラム Show_DateTime_01.xls”を起動して、名前を”Show_Select_01.xls”と変更して保存 します。

次に、下図のようにメニューバーから「ツール」を選び、「マクロ」、「Visual Basic Editor」 をポイントして選択する。

下図のような Visual Basic Editor のウィンドウが表示されるので、プロジェクトエクスプロー ラの中の フォーム フォルダーを開けて、 MyForm”を右クリックする。 VB エディター プロジェクトエクスプローラ 上図(右)のような画面が現れるので、 MyForm”の オブジェクトの表示”をクリックし て、次のような MyForm”のフォームを呼び出す。コントロールの貼り付け方は、前章と同 様に、ツールボックスを利用します。この場合は、コマンドボタンを貼り付けます。

(32)

フォーム作成 コマンドボタンを貼り付けたら、そのプロバティをプロパティウィンドウにより書き換え ます。 貼り付けたコントロール(ラベルとコマンド)のオブジェクト名、キャプション、フォン トを変更します。変更するためには、フォーム上のコマンドボタンをクリックし(ダブルク ッリクするとコードがあらわれてしまうので注意)、プロバティウィンドウのオブジェクト名、 キャプション、フォントをクリックして変更します。オブジェクト名=”cmdSelect”, キャプ ション= 適性診断”、フォントサイズは 18 とする。 オブジェクト名 キャプション CommandButon1 cmdSelect 適性診断 次に、VB エディターのコマンドバーから 挿入 をクリックし、ユーザーフォームを選 択して新たなユーザーフォームを作成します。 プロジェクトエクスプローラにおいて、 フォーム フォルダーの”MyForm”の下に、新た に”UserForm1”が作られていることを確認する。他のフォームも同様に作成できる。フォーム やコードは編集機能でコピーして利用できるので、この”UserForm1”を記述して、それをコピ ーする手順を次に示す。 ツールボックスを用いて、下図のように 1 つのラベル(Labl1)と3つのコマンドボタンを

(33)

貼 り 付 け る 。 そ れ ぞ れ ”UserForm1, Label1, CommandButton1, CommandButton2, CommandButton3 のオブジェクト名、キャプション、フォントをプロバティウィンドウから 修正する。

オブジェクト名 キャプション

UserForm1 Question1Form Question1Form Label1 lblQuestion コンピュータは好きですか? CommandButton1 cmdYes はい CommandButton2 cmdNo いいえ CommandButton3 cmdReturn 戻る プロジェクトエクスプローラにおいて、 フォーム フォルダーの”MyForm”の下に、 Question1Form が作されていることを確認する。 次に再び VB エディターのコマンドバーから 挿入 をクリックし、ユーザーフォームを 選択し、新たなユーザーフォームを作成し、Question2Form とします。 Question2Form は Question1Form をコピーして作る。プロジェクトエクスプローラにおいて、 Question1Form を 右クリックし、 オブジェクトの表示 を選択します。これにより、 Question1Form のフォームが表示されます。Question1Form のフォームの一部をクリックし、

(34)

Ctrl+A を入力する。Question1Form のフォームが下図のようになることを確認し、 Ctrl+C によりコピーします。 プロジェクトエクスプローラにおいて、Question2Form を右クリックし、 オブジェクトの 表示 を選択し、Question2Form のフォームを表示します。Question2Form のフォームをクリ ックし、Ctrl+V によりコピーを貼り付けます。コマンドバーの編集のコピー、貼り付けを 使用しても同様です。 Question2Form のフォームを1度クリックして、Ctrl+A を解除します。その後、それぞれ UserForm1、コマンドなどのオブジェクト名、キャプションをプロバティウィンドウから修 正する。 オブジェクト名 キャプション

UserForm1 Question2Form Question2Form LblQuestion1 lblQuestion2 科学は好きですか? CmdYes cmdYes はい CmdNo cmdNo いいえ CmdReturn cmdReturn 戻る このコピーと貼り付けの操作は、コードについても同様に利用できるので、Question1Form のコードを作成し、それを他のフォームにコピーして貼り付けます。 他のフォームも同様の方法にて作成します。 コードの作成は、前章と同様に行います。作成するコードを以下に示す。 3)コードの入力 コードの記述が終了したら、先ほどと同様に、プロジェクトエクスプローラの中に作成し た「MyForm」を右クリックします。その中から「オブジェクトの表示」を選択することで、 作成中のフォームが現れます。次に「終了」ボタンとクリックし、先ほどと同様に下記のコ ードを記述します。

Private Sub cmdEnd_Click() End

End Sub

(35)

Private Sub cmdClose_Click() Unload MyForm End Sub このようにして記述したコードはそれぞれのイベントを実行します。 lblDate.Caption = Date lblTime.Caption = Time これらのコードが実行されると、フォームの lblDate と lblTime の貼り付けた位置にその時 の、日付と時刻が表示されます。 End では終了し、Unload MyForm では、その Form を 閉じます。これは、Unload me と記述しても同じ動作(イベント)になります。 4)ユーザーフォームを表示するマクロの作成 ユーザーフォームを表示するためのマクロを作成するには、まず、下図のように VB エデ ィターの「挿入」をクリックし、「標準モジュール」を選択する。 下記のコードを入力します。 Sub ShowUserForm() MyForm.Show End Sub

ここで作成したオブジェクト ShowUserForm を Excel の sheet から実行するためには、 Excel の sheet 上にこのオブジェクトを呼び出すボタンを貼り付けなければなりません。

5)ワークシートからマクロを起動するボタンの作成

ワークシート上には、マクロを実行するためのボタンを作成することができます。ここで は、前節で作成したオブジェクト ShowUserForm を Excel の sheet から実行するためのボ タンを作成します。

(36)

を選択する。 「表示」、「ツールバー」の中の「フォーム」を選択すると、下図のようなファームが sheet 上に現れます。 そこで、この中のボタンをクリックし、ボタンを貼り付ける位置で再度クリックし、 そのままドラッグすることで、ボタンを大きさと位置を決めると、下図のようなボタン1が 表示され、同時に次に示す「マクロの登録」のウィンドウが現れます。 「マクロの登録」のウィンドウでは、まず、マクロ名でボックスに表示された使用したいマ クロ(ここでは、前節で作成した ShowUserForm)を選択し、OK ボタンをクリックする。

(37)

次にエクセルの sheet にもどり、貼り付けた「ボタン1」をクリックして、表示を適当なも の(ここでは、「日付と時刻の表示」)に書き換えます。エクセルの sheet に貼り付けたこの 「ボタン1」(「日付と時刻の表示」)をクリックすると作成した ShowUserForm が起動します。 6)動作確認 完成した sheet とユーザーフォーム このボタンをクリックすると 日付と時刻を示すユーザー フォームがあらわれる。 「確認」ボタンで日付と時刻 が表示される。「終了」「閉じ る」 7) ユーザーフォームの自動起動 今のままでも、sheet 上のボタンからユーザーフォームを起動できますが、Excel の起動時 に ユ ー ザ ー フ ォ ー ム を sheet 上 に 表 示 す る に は ど う し た ら よ い の で し ょ う か 。 Sub WorkBook_Open イベントを利用する方法があります。まず、下図のように VB エディターの プロジェクト・ウイザードの中から「ThisWorkbook」を右クリックし、「コードの表示」を選 択する。

(38)

下図のように(General)が表示されますが、下ボタンを押して、Workbook をクリックし て、Sub Workbook_Open()の Sub プロシージャのコードが現れる。

ここで、End Sub の間に、 「MyForm.show」と入力して、コードを完成させる。

このままでも、Excel の起動時にユーザーフォームを sheet 上に表示することはできるが、 ユーザーフォームが表示されている間は、Excel 上の操作はできません。そこで、ユーザー フォームを表示している間も Excel 上の操作を行いたい場合、次のように「vbModeless」と 指定します。

Private Sub Workbook_Open() MyForm.Show vbModeless

(39)

6.Excel から VBA 操作に関する解説(テキスト・コンボボック

スの作成)

Excel の sheet から VBA プログラムを実行するためのプログラム作成方法について解説す る。

6.1 テキストボックスの利用方法

ユーザーフォームのテキストボックスを利用する対話型プログラム

下図のように Excel の sheet1 に各物質の蒸気圧を計算するための物質定数である Antoine 定数が示してある。この表の数値を用いて、任意の温度(入力される数値)に対する水の蒸 気圧をユーザーフォームから計算し、表示するプログラムを作成する。

1) ユーザーフォームの起動

まず、Excel を起動して、sheet1からユーザーフォームを作成してみよう。

下図のようにメニューバーから「ツール」を選び、「マクロ」、「Visual Basic Editor」をポイン トして選択する。

(40)

ら、「ユーザーフォーム」を選択する。 次のようなユーザーフォームが追加される。 「 プ ロ ジ ェ ク ト エ ク ス プ ロ ー ラ に も 「UserForm1」が追加されたことを確認する。 2)フォームの作成とオブジェクト名の変更 今追加されたオブジェクトは、「UserForm1」という名のオブジェクトであったので、プロ グラム中で使用する自分で決めたオブジェクト名に変更する。ここでは、「MyForm」と変更 する。変更は、プロパティウィンドウで行う。Form の名称も変更できるので、プロパティウ ィンドウにある Caption をクリックして、「Form」を「フォーム」に変更する。 表示したフォームに下図のようにコントロール(ラベル、コマンド、テキストボックス)を 貼り付ける。

(41)

このユーザーフォームには、3つのラベル、2つのコマンドボタンと1つのテキストボッ クスを貼り付けます。それぞれツールボックスの「A」ボタンなどのボタンをクリックし、 フォーム上の適当な位置でクリック・ドラッグすることで貼り付けます。 3) コントロール(ラベルとコマンド)の変更 貼り付けたコントロール(ラベルとコマンド)のオブジェクト名、キャプション、フォン トを変更します。変更するためには、フォーム上の各コマンド(例えば Label1)をクリック し(ダブルクッリクするとコードがあらわれてしまうので注意)、各プロバティウィンドウの オブジェクト名、キャプション、フォントをクリックして変更します。変更は、下記のよう に行います。なお、ファンドサイズはすべて18とする。 オブジェクト名 キャプション Label1 lblShowCondition 水の蒸気圧を計算します。 温度を入力して下さい。 Label2 lblDegree ℃ Label3 lblShowVP 蒸気圧は CommandButton1 cmdCalc 計算する CommandButton2 cmdEnd 終了 TextBox1 txtTemperature1 フォームを表示して、各ボタンを押した場合に動作するようにイベントプロシージャを作 成(プログラムコードの記述)しましょう。コマンドボタン「計算する」をダブルクリック すると、コードウィンドウが表示されるので、下記のコードを記述する。

Private Sub cmdCalc_Click()

Dim T(20) As Single, p10(20) As Single, xlnp As Single Dim A1 As Single, B1 As Single, C1 As Single

' Antoine 定数の読み込み A1 = Cells(3, 2)

B1 = Cells(3, 3) C1 = Cells(3, 4)

(42)

' 温度 T の読み込み T(1) = txtTemperature1.Text ' 蒸気圧の計算 xlnp = A1 - B1 / ((T(1) + 273.15) + C1) ' mmHg p10(1) = Exp(xlnp) / 760 * 0.101325 ' MPa

lblShowVP.Caption = "水の" & T(1) & "℃における蒸気圧は" _ & Val(Format(p10(1), "###.######")) & "[MPa]です。"

End Sub

Private Sub cmdEnd_Click() End End Sub コードの記述が終了したら、プロジェクトエクスプローラの中に作成した「MyForm」を 右クリックします。その中から「オブジェクトの表示」を選択することで、作成中のフォー ムが現れます。 これらのコードが実行されると、sheet1 から蒸気圧を計算する際に用いる水の Antoine 定 数 A1、B1,C1 を Cells(i, j)で読み込みます。温度は、テキストボックス txtTemperature1 に入 力される数値を txtTemperature1.Text で変数 T(1)として読み込みます。変数 xlnp は、Antoine 式で計算される蒸気圧の対数、変数 p10(1)は、蒸気圧pを表します。まず、フォームのテキ ストボックス txtTemperature1 に数値を入力し、コマンドボタン「計算する」をクリックする と、蒸気圧の計算結果を表示するようなコードとなっています。 ユーザーフォームを表示するためのマクロを作成するには、まず、下図のように VB エディ ターの「挿入」をクリックし、「標準モジュール」を選択する。 下記のコードを入力します。 Sub ShowUserForm() MyForm.Show End Sub

(43)

Excel の sheet 上にこのオブジェクトを呼び出すボタンを貼り付けなければなりません。 ワークシートからマクロを起動するボタンの作成するには、前節で作成したオブジェクト ShowUserForm を Excel の sheet から実行するためのボタンを作成します。Excl の sheet1 にもどり、「表示」をクリックし、「ツールバー」の中の「フォーム」を選択する。 「表示」、「ツールバー」の中の「フォーム」を選択すると、下図のようなフォームが sheet 上に現れます。 この中のボタンをクリックし、ボタンを貼り付ける位置で再度クリックし、 そのままドラッグすることで、ボタンを大きさと位置を決めると、下図のようなボタン1が 表示され、同時に次に示す「マクロの登録」のウィンドウが現れます。 「マクロの登録」のウィンドウでは、まず、マクロ名でボックスに表示された使用したいマ クロ(ここでは、前節で作成した ShowUserForm)を選択し、OK ボタンをクリックする。

(44)

次にエクセルの sheet にもどり、貼り付けた「ボタン1」をクリックして、表示を適当なも の(ここでは、「蒸気圧の計算」)に書き換えます。エクセルの sheet に貼り付けたこの「ボ タン1」(「蒸気圧の計算」)をクリックすると作成した ShowUserForm が起動します。 動作確認は次のように行います。 完成した sheet とユーザーフォーム ユーザーフォームの自動起動の設定は、前述の通りです。 空白のテキストボックスに数 値(たとえば 100)を入力しエ ンターキーで確定した後、こ のボタンをクリックすると、 水の蒸気圧を計算して下に表 示します。 「終了」ボタンをクリックす ると終了し フ ム閉じま

(45)

6.2 コンボボックスの使用法

コンボボックスを利用して、別の sheet にあるデータを利用して計算を行う方法について 説明する。

まず、Excel を起動して、sheet2 の名称を Antone 定数のデータ と変更し下記のよう に作成する。この表に記述したデータ(各物質の物質名とその Antoine 定数 A、B,C)を sheet1 メインシート”に作成するコンボボックスを利用して、各物質を呼び出し、sheet1 上のユー ザフォームに与えられた温度範囲で、そのコードから蒸気圧を計算します。

(46)

sheet1 の B18 の位置に、次の手順でコンボボックスを貼り付ける。まず、下図(左)の ように 表示 をクリックし、 ツールバー 、 フォーム を選択する。下図(右)のフォー ム(ツールボックス)が現れる。 貼り付けた コンボボッ クス コ ン ボ ボ ッ ク スのボタン フォーム(ツールボックス)の中のコンボボックスをクリックする。ポインタが「+」に 変わったことを確認し、コンボボックスを作りたい場所で対角線を引くようにドラッグして 四角形を作る。コンボボックスが sheet 上に表示される。 コンボボックスに表示させたいデータとその結果をどこに表示させるかを次の手順で決定 する。 まず、コンボボックス上で右クリックし、「コントロールの書式設定」を選ぶ。 コントロールの書式設定 が現れるので、 コントロール タブをクリックし、上図(右) のような画面にする。ここで、「入力範囲(I)」には、コンボボックスの元になるデータの範囲

(47)

を入力する。「リンクするセル©」には、選んだ結果(元になるデータの上から何番目か)を 表示させるセルを指定する。この場合、直接セルに入力することもできるが、それぞれのボ ックスをクリックし(変数がある場合は Delete キーなどで削除しておく)、それぞれ元にな るデータのセルをドラック、または結果を表示させたいセルをクリックすると自動的にこの 書式設定に書き込まれる。 この場合、 コントロールの書式決定 のフォームに関して、 入力範囲 の横のテキスト ボックスでは、そこを空にしておいてから、 Antoine 定数のデータ (sheet2 を名称変更した もの)のセル B3から B13 をクリックアンドドラッグする。さらに、同様の方法を用いて、” リンクするセル については、 メインシート (sheet1 を名称変更したもの)のセル A3 を クリックする。 ドロップダウンリストの行数は、8程度でよい。 必要事項を記入した後、右下の OK ボタンをクリックする。これで、コンボボックスの設 定が完了する。 コンボボックスを利用して、別のシートのデータを取り出したい(抽出)場合、 ここで” リンクするセル として設定した メインシート のセル A3 と、 入力範囲 として設定し た Antoine 定数のデータ (sheet2 を名称変更したもの)のセル B3から B13 が重要である。 実際にコンボボックスを使用する場合、コンボボックスの右のボタンをクリックすると、 入力範囲 として設定した Antoine 定数のデータ のセル B3から B13 の文字(水、ク ロロフホルム、メタノールなど)がコンボボックスの下にドロップダウンリストとして表示 されます。この時、使用者が選択したリストの番号が、”リンクするセル として設定した メインシート のセル A3 に表示されます。この番号を用いて、 入力範囲 として設定した Antoine 定数のデータ (sheet2 を名称変更したもの)のシートから、選択されたものに関 する他のデータ(ここでは、その物質の Antoine 定数 A1,B1,C1 の値)をそのシートから抽出 して、メインシートで使用します。 これらの作業を行うには、次のようなプログラムコードの記述します。

(48)

---ーーーーーーーーー ' ComboBox からの物質の決定と ' sheet2 の"Antoine 定数のデータ からの物質名、定数の読み込み '---ーーーーーーーーー CompNum = Cells(17, 2) ' 蒸気圧を計算する成分数 For k = 1 To CompNum NoComp(k) = Cells(k + 2, 1)

CompName(k) = Worksheets("Antoine 定数のデータ").Cells(2 + NoComp(k), 2) Worksheets("メインシート").Cells(2 + k, 2) = CompName(k)

' Antoine 定数の読み込み

A1(k) = Worksheets("Antoine 定数のデータ").Cells(2 + NoComp(k), 3).Value B1(k) = Worksheets("Antoine 定数のデータ").Cells(2 + NoComp(k), 4).Value C1(k) = Worksheets("Antoine 定数のデータ").Cells(2 + NoComp(k), 5).Value ' sheet1 の"メインシート への物質名、定数の書込み Worksheets("メインシート").Cells(2 + k, 3) = A1(k) Worksheets("メインシート").Cells(2 + k, 4) = B1(k) Worksheets("メインシート").Cells(2 + k, 5) = C1(k) Next k このコードでは、 複数のコンボボックスを同時に使用しています。まず、使用するコンボボ ックスの数を、CompNum = Cells(17, 2) として、セル B17 から読み込みます。次に、 ”リ ンクするセル として設定した メインシート のセル A3(複数の場合は、セル A4、A5 な ども使用)に表示された使用者が選んだリストの番号(例えば、水なら1、フロロホルムな ら2など)を変数 NoComp(k) に次のように代入します。 NoComp(k) = Cells(k + 2, 1) 次に、この変数を利用して、シート"Antoine 定数のデータ"に記述された 物質名 を次のコ ードで変数. CompName(k)に代入し、その結果を、 メインシート のセル B3 に記述するた めに、次のコードを用います。

CompName(k) = Worksheets("Antoine 定数のデータ").Cells(2 + NoComp(k), 2) Worksheets("メインシート").Cells(2 + k, 2) = CompName(k)

Antoine 定数の読み込みについても同様に、下記のようなコードを用いて変数、A1(k)、 B1(k)、C1(k)に、シート"Antoine 定数のデータ"に記述されたそれぞれの値を代入する。さら にその変数を利用して、その値を"メインシート"に書込みます。

A1(k) = Worksheets("Antoine 定数のデータ").Cells(2 + NoComp(k), 3).Value B1(k) = Worksheets("Antoine 定数のデータ").Cells(2 + NoComp(k), 4).Value C1(k) = Worksheets("Antoine 定数のデータ").Cells(2 + NoComp(k), 5).Value

(49)

' sheet1 の"メインシート への物質名、定数の書込み Worksheets("メインシート").Cells(2 + k, 3) = A1(k) Worksheets("メインシート").Cells(2 + k, 4) = B1(k) Worksheets("メインシート").Cells(2 + k, 5) = C1(k) "メインシート"は次のようになります。 実際に、コンボボックスを利用して、 Antone 定数のデータ から物質名を選択するだ けで、その選択した物質の Antoine 定数を読み込み、指定された温度領域の各物質の蒸気圧 を等間隔に 11 点計算し、その結果を図に示しますことを考えます。 前節と同様にユーザフォームを追加して、下記のような MyForm”を作成し、次に示すコ ードを記述する。さらに、sheet1 上に MyForm を起動するためのコマンドボタン 蒸気圧の 計算 を L10:M11 付近に貼り付け、前節と同様のコードは記述する。

(50)

“MyForm に記述するコード

Private Sub cmdCalc_Click()

Dim CompName(10) As String '成分名 Dim NoComp(10) As Integer '成分ナンバー Dim CompNum As Integer '成分数 '

Dim T(20) As Single, p10(20) As Single, xlnp(20) As Single Dim rT(20) As Single, dT As Single

Dim A1(10) As Single, B1(10) As Single, C1(10) As Single '--- ' 準備 Application.StatusBar = "しばらくお待ちください" 'ステータスバーの表示 Application.ScreenUpdating = False '画面の更新を停止(計算速度向上のため) '---ーーーーーーーーーーーーーーーーーーーーーーーーーーーー- ' 出力部分のクリア Worksheets("メインシート").Range("F2:K38,B3:E15").Select Selection.ClearContents Worksheets("メインシート").Range("A1").Activate '---ーーーーーーーーー ' ComboBox からの物質の決定と ' sheet2 の"Antoine 定数のデータ からの物質名、定数の読み込み '---ーーーーーーーーー CompNum = Cells(17, 2) ' 蒸気圧を計算する成分数 For k = 1 To CompNum NoComp(k) = Cells(k + 2, 1)

CompName(k) = Worksheets("Antoine 定数のデータ").Cells(2 + NoComp(k), 2) Worksheets("メインシート").Cells(2 + k, 2) = CompName(k)

' Antoine 定数の読み込み

A1(k) = Worksheets("Antoine 定数のデータ").Cells(2 + NoComp(k), 3).Value B1(k) = Worksheets("Antoine 定数のデータ").Cells(2 + NoComp(k), 4).Value C1(k) = Worksheets("Antoine 定数のデータ").Cells(2 + NoComp(k), 5).Value ' sheet1 の"メインシート への物質名、定数の書込み Worksheets("メインシート").Cells(2 + k, 3) = A1(k) Worksheets("メインシート").Cells(2 + k, 4) = B1(k) Worksheets("メインシート").Cells(2 + k, 5) = C1(k) Next k ' 温度 T の読み込み

(51)

T(1) = txtTemperature2.Text ' 下限温度 T(11) = txtTemperature1.Text ' 上限温度 ' 温度データの作成(下限から上限温度までを 10 等分する。) dT = (T(11) - T(1)) / 10 For i = 1 To 10 T(i + 1) = T(1) + dT * i Next i ' 蒸気圧の計算 ' 各成分kごとに蒸気圧を計算する。 '--- For k = 1 To CompNum For i = 1 To 11

xlnp(i) = A1(k) - B1(k) / ((T(i) + 273.15) + C1(k)) ' mmHg p10(i) = Exp(xlnp(i)) / 760 * 0.101325 ' MPa Next i ' グラフ作成用のデータ For i = 1 To 11 rT(i) = 1 / (T(i) + 273.15) Next i ' グラフ作成用のデータの出力 ' 物質名の表示 Cells(2 + 13 * (k - 1), 6) = CompName(k) For i = 1 To 11 Cells(1 + i + 13 * (k - 1), 7) = i Cells(1 + i + 13 * (k - 1), 8) = T(i) Cells(1 + i + 13 * (k - 1), 9) = p10(i) Cells(1 + i + 13 * (k - 1), 10) = rT(i) Cells(1 + i + 13 * (k - 1), 11) = xlnp(i) Next i Next k '---

lblShowVP1.Caption = "水の" & T(1) & "℃における蒸気圧は" _ & Val(Format(p10(1), "###.######")) & "[MPa]です。"

lblShowVP2.Caption = "水の" & T(11) & "℃における蒸気圧は" _ & Val(Format(p10(11), "###.######")) & "[MPa]です。"

End Sub

(52)

End End Sub 完成プログラムの動作確認 完成した Excel プログラム Show_VP_Graph02,xls を起動すると、メインシートの上に作 成したユーザーホームが表示されるので、上限温度、下限温度を入力します。ここでは、上 限温度、を 100℃、下限温度を 0℃とします。続いて、ボタン 計算する をクリックすると 計算結果が表示されます

(53)

参照

関連したドキュメント

[Publications] Masaaki Tsuchiya: &#34;A Volterra type inregral equation related to the boundary value problem for diffusion equations&#34;

[Publications] S.Kanoh,M.Motoi et al.: &#34;Monomer-isomerization, Regioselective Cationic Ring-Opening Polymerization of Oxetane Phthalimide Involving Carbonyl

&#34;A matroid generalization of the stable matching polytope.&#34; International Conference on Integer Programming and Combinatorial Optimization (IPCO 2001). &#34;An extension of

The reported areas include: top-efficiency multigrid methods in fluid dynamics; atmospheric data assimilation; PDE solvers on unbounded domains; wave/ray methods for highly

[r]

Rumsey, Jr, &#34;Alternating sign matrices and descending plane partitions,&#34; J. Rumsey, Jr, &#34;Self-complementary totally symmetric plane

McKennon, &#34;Dieudonn-Scwartz theorem on bounded sets in inductive limits&#34;, Proc. Schwartz, Theory of Distributions, Hermann,

かなら プレイステーション ツー ほんたいはいめん メイン パワー でんげん き エーシー. 必ず、 &#34;PlayStation 2&#34; 本体背面の MAIN