黃兆龍,唐云翠,王麗菊,李 芳,許琴芬,畢建梁
(紅河學(xué)院理學(xué)院云南蒙自661100)
介紹一種用Word編寫(xiě)化學(xué)計(jì)算器的方法
黃兆龍,唐云翠,王麗菊,李 芳,許琴芬,畢建梁
(紅河學(xué)院理學(xué)院云南蒙自661100)
利用MsOffice內(nèi)嵌的VBA工具,將普通的Word文檔編制成一個(gè)具有計(jì)算面板(窗口),可作各種計(jì)算的化學(xué)軟件.通過(guò)實(shí)例介紹了Word文檔型化學(xué)軟件的編寫(xiě)方法.
MsOffice;VBA;文檔型軟件;化學(xué)計(jì)算器
Ms Office是眾所周知的辦公軟件,Word有強(qiáng)大的文字表達(dá)功能,Excel有強(qiáng)大的統(tǒng)計(jì)與計(jì)算功能,Powerpoint有多彩的演示功能.應(yīng)用Office的不同軟件可以滿足文字處理和數(shù)據(jù)處理的諸多要求.在化學(xué)學(xué)習(xí)中,尤其在分析化學(xué)的學(xué)習(xí)中,許多知識(shí)點(diǎn)的討論和處理都以數(shù)據(jù)形式來(lái)表現(xiàn),涉及到較多的公式計(jì)算,如何利用Word或Excel來(lái)編寫(xiě)具有計(jì)算功能,又具有交互學(xué)習(xí)功能的Offiec文檔——文檔型軟件,是一個(gè)很有意義的開(kāi)發(fā)問(wèn)題,目前,有關(guān)的文獻(xiàn)或作品還鮮有報(bào)道[1].我們利用Ms Office內(nèi)嵌的VBA(Visual Basic for Application),在編寫(xiě)Word化學(xué)文檔時(shí),通過(guò)添加控件,編寫(xiě)簡(jiǎn)單的VB代碼,巧妙地拓展了Word文檔的計(jì)算功能和學(xué)習(xí)功能,使一篇很普通的Word文檔變成了一個(gè)具有窗體形式和計(jì)算功能的文檔型化學(xué)計(jì)算器.現(xiàn)以“各種條件下的沉淀溶解度計(jì)算”軟件為例,介紹文檔型化學(xué)計(jì)算器的編寫(xiě)方法.
各種沉淀溶解度計(jì)算是《分析化學(xué)》中重量分析的計(jì)算內(nèi)容,情況復(fù)雜,計(jì)算繁瑣,涉及到前述的幾章內(nèi)容.如果將相關(guān)內(nèi)容進(jìn)行梳理、歸納,無(wú)疑有助于相關(guān)知識(shí)的學(xué)習(xí)和理解,如果能在學(xué)習(xí)知識(shí)要點(diǎn)或計(jì)算公式的同時(shí),隨時(shí)調(diào)入與之對(duì)應(yīng)的化學(xué)計(jì)算器,進(jìn)行任意條件下的化學(xué)實(shí)例計(jì)算,這將會(huì)使學(xué)習(xí)和運(yùn)用相得益彰,有利于激發(fā)和調(diào)動(dòng)學(xué)生的學(xué)習(xí)興趣,提高學(xué)習(xí)效率和實(shí)用功能.為此,我們選擇了用word文檔來(lái)編輯一個(gè)化學(xué)計(jì)算器——各種條件下的沉淀溶解度計(jì)算(化學(xué)計(jì)算器).
計(jì)算器面板基本框架:一張表格、少量文字、若干個(gè)計(jì)算窗體.通過(guò)表格中的按鈕控件調(diào)出計(jì)算面板.
“各種條件下的沉淀溶解度計(jì)算”的文檔部分見(jiàn)圖1:
圖1 軟件的文檔部分
文檔右欄中含各部分的計(jì)算鏈接,需要計(jì)算該類(lèi)問(wèn)題時(shí),可以單擊"我要計(jì)算"按鈕,即可調(diào)出對(duì)應(yīng)的計(jì)算面板.見(jiàn)圖2:
圖2 純水中的溶解度計(jì)算面板
它包括公式提示、基本的參數(shù)輸入及計(jì)算結(jié)果框、三個(gè)按鈕.對(duì)于各種情況下需要輸入的條件或參數(shù)(例如,含酸效應(yīng)時(shí)需pH值、各級(jí)酸離解常數(shù)等),則在按下“計(jì)算”按鈕后,結(jié)合實(shí)際情況通過(guò)對(duì)話框方式輸入數(shù)據(jù).這樣設(shè)計(jì),既可使計(jì)算面板簡(jiǎn)潔明了,又可增強(qiáng)計(jì)算的交互性.圖3是計(jì)算有酸效應(yīng)的溶解度時(shí)彈出的pH值輸入框(對(duì)話框):
圖3 數(shù)據(jù)輸入的對(duì)話框
按下“確定”后還會(huì)彈出離解常數(shù)輸入框.數(shù)據(jù)輸入完畢,計(jì)算結(jié)果會(huì)顯示在圖2下部的溶解度文本框中(S).
MsOffice中已有大量的控件,要在Word文檔中插入控件,可在Word編輯界面下,點(diǎn)工具欄的“視圖/工具欄/控件工具箱”,便彈出圖標(biāo)顯示的控件工具箱,單擊需要的按鈕、文本框、標(biāo)簽等控件,控件就會(huì)插入到文檔的光標(biāo)處,然后對(duì)插入的控件進(jìn)行簡(jiǎn)單編輯(改名、編輯字體、字號(hào)、顏色、調(diào)整控件大小等),對(duì)按鈕等控件,需編寫(xiě)簡(jiǎn)單的代碼,讓它來(lái)實(shí)現(xiàn)計(jì)算、賦值和提示功能.要在計(jì)算面板(窗體)中插入控件,可按下Alt+F11,調(diào)出VB編輯器,單擊工具欄的“插入/用戶(hù)窗體”,即可在右側(cè)出現(xiàn)一個(gè)新窗體(即計(jì)算面板),調(diào)整窗體大小,單擊工具欄的“視圖/工具箱”,調(diào)出控件工具箱,在窗體中添加必要的控件,并編輯控件,即得到了圖2所示的計(jì)算面板.
計(jì)算面板的計(jì)算功能是通過(guò)按鈕控件(也可通過(guò)其他控件)來(lái)觸發(fā)計(jì)算相關(guān)的子程序,根據(jù)輸入的數(shù)據(jù)和條件來(lái)完成計(jì)算.因此代碼編寫(xiě)是必不可少的,但一般簡(jiǎn)單的計(jì)算面板不需要編寫(xiě)很復(fù)雜的代碼,通常用幾段常用代碼幾乎就可以“通吃”計(jì)算問(wèn)題了.在設(shè)計(jì)或布置好計(jì)算面板的控件后,可以按下述介紹寫(xiě)入幾段按鈕代碼(以純水溶解度計(jì)算為例):
2.2.1 “我要計(jì)算”按鈕的代碼
作用:調(diào)出計(jì)算面板.
代碼編寫(xiě):令控件處于“設(shè)計(jì)模式”,雙擊“純水”右側(cè)的“我要計(jì)算”,即彈出VBA的代碼編輯窗口:
圖4 VB編輯器窗口(代碼窗口)
純水中S計(jì)算的代碼見(jiàn)圖4中的加亮部分.該按鈕控件名稱(chēng)為“純水S”,1、3句代碼都是系統(tǒng)自動(dòng)生成的,填寫(xiě)第2句.
“UserForm1純水.Show”的作用是加載純水中溶解度的計(jì)算面板(窗體名稱(chēng)為“UserForm1純水”,自定義的),即顯示計(jì)算面板(圖2).其他“我要計(jì)算”的按鈕代碼與此相同,只需修改計(jì)算面板名稱(chēng)即可(在本例中,各類(lèi)計(jì)算都設(shè)計(jì)了各自的計(jì)算面板).
2.2.2 計(jì)算面板中各按鈕的代碼
計(jì)算面板中設(shè)計(jì)了“計(jì)算”、“退出”、“清空”三個(gè)按鈕,它們的作用和代碼如下:
(1)“退出”按鈕代碼
作用:關(guān)閉計(jì)算面板
代碼編寫(xiě):在VBA編輯窗口左側(cè),雙擊“UserForm1純水”圖標(biāo)(即打開(kāi)純水的計(jì)算面板),再雙擊右邊計(jì)算面板中的“退出”按鈕,右邊變?yōu)榇a窗口,在中間代碼區(qū)填寫(xiě)“Unload Me”:
Private Sub退出_Click()
Unload Me
End Sub
1、3 句是系統(tǒng)自動(dòng)生成的.“Unload Me”是關(guān)閉當(dāng)前窗體,即關(guān)閉計(jì)算面板.
(2)“清空”按鈕代碼
作用:將計(jì)算面板中的文本框數(shù)據(jù)清空為空白.
代碼編寫(xiě):雙擊計(jì)算面板中的“清空”按鈕,右邊變?yōu)榇a窗口,在中間填寫(xiě)如下代碼:
Private Sub清空_Click()
TextBox1.text=""
TextBox2.text=""
TextBox3.text=""
TextBox4.text=""
End Sub
1、3 句是系統(tǒng)自動(dòng)生成的.TextBox1到Tex tBox4是計(jì)算面板上四個(gè)文本框的名稱(chēng),TextBox1.text表示文本框內(nèi)填寫(xiě)或顯示的值(可以是數(shù)據(jù)或字符),代碼中的四個(gè)等式是賦值語(yǔ)句,表示清空文本框(雙引號(hào)里填入任何數(shù)據(jù)或字符,則在文本框中就“原樣”顯示該數(shù)據(jù)或字符).
(3)“計(jì)算”按鈕代碼
作用:利用計(jì)算面板中的文本框數(shù)據(jù)及其他來(lái)源的數(shù)據(jù)進(jìn)行計(jì)算,得到溶解度值.
代碼編寫(xiě):雙擊計(jì)算面板中的“計(jì)算”按鈕,在右邊的代碼窗口中,填寫(xiě)如下代碼:
Private Sub計(jì)算_Click()
Dim Ksp,m,n,s
Ksp=10^(-Val(TextBox1.Text))
m=Val(TextBox2.Text)
n=Val(TextBox3.Text)
s=(Ksp/m^m/n^n)^(1/(m+n))
MsgBox"溶解度s="&s
TextBox3.Text=s
End Sub
本例中Ksp、m、n三個(gè)值是從計(jì)算面板中的文本框里取值的,它們都是字符串,需用Val()函數(shù)將它們轉(zhuǎn)換為數(shù)值,故有:m=Val(TextBox2.Text)等語(yǔ)句;因輸入了pKsp,計(jì)算要用Ksp,故需進(jìn)行指數(shù)換算:Ksp=10^(-Val(Tex tBox1.Text)).s表達(dá)式為溶解度計(jì)算公式,最后計(jì)算得到的s值分別以信息框形式告知(用了MsgBox函數(shù))和顯示在計(jì)算面板的文本框中(Tex tBox3.Text=s).
如果有其他影響時(shí),“計(jì)算”代碼會(huì)略為復(fù)雜些.條件值可以通過(guò)對(duì)話框形式交互地輸入,可以用數(shù)組和循環(huán)語(yǔ)句來(lái)方便地實(shí)現(xiàn).
當(dāng)然,如果考慮到輸入數(shù)據(jù)時(shí)的一些失誤(如輸入負(fù)數(shù)或忘記輸入,錯(cuò)按取消等),以及結(jié)果要以科學(xué)計(jì)數(shù)法表示等要求,還可以補(bǔ)充一些中斷和提示的代碼,在此不再詳述.
Ms Office中的VBA是一款拓展Office功能的內(nèi)嵌軟件,利用VBA工具,在初步掌握一些編程知識(shí)的基礎(chǔ)上,可以用Word編寫(xiě)化學(xué)軟件,圖文并茂,即時(shí)學(xué)習(xí)即時(shí)應(yīng)用,提高化學(xué)電子文檔的實(shí)用性和廣泛性.
[1]羅剛君.Excel_VBA程序開(kāi)發(fā)自學(xué)寶典[M].北京:電子工業(yè)出版社,2009
A methode of editing chem istry calculator by the Word
HUANG Zhao-long,TAN Yun-cui,WANG Li-ju,LI Fang,XU Qin-Fen
(College of Science,Hong he University,Mengzi 661100,China)
Using VBA build-in Ms Office,a normal word document could be wrote and changed to a chemical software with a calculation panels for many chemical calculation.Base on the sample,a methode of editing documental chemistry software had been introduced.
Ms Office;VBA;documental chemistry software;chemical calculator
TP3-0
A
1008-9128(2011)02-0031-03
2011-03-25
黃兆龍(1958-),男,云南建水人,教授。研究方向:冶金分析和計(jì)算化學(xué).
[責(zé)任編輯 張燦邦]