黃兆龍,唐云翠,王麗菊,李 芳,許琴芬,畢建梁
(紅河學院理學院云南蒙自661100)
介紹一種用Word編寫化學計算器的方法
黃兆龍,唐云翠,王麗菊,李 芳,許琴芬,畢建梁
(紅河學院理學院云南蒙自661100)
利用MsOffice內嵌的VBA工具,將普通的Word文檔編制成一個具有計算面板(窗口),可作各種計算的化學軟件.通過實例介紹了Word文檔型化學軟件的編寫方法.
MsOffice;VBA;文檔型軟件;化學計算器
Ms Office是眾所周知的辦公軟件,Word有強大的文字表達功能,Excel有強大的統計與計算功能,Powerpoint有多彩的演示功能.應用Office的不同軟件可以滿足文字處理和數據處理的諸多要求.在化學學習中,尤其在分析化學的學習中,許多知識點的討論和處理都以數據形式來表現,涉及到較多的公式計算,如何利用Word或Excel來編寫具有計算功能,又具有交互學習功能的Offiec文檔——文檔型軟件,是一個很有意義的開發問題,目前,有關的文獻或作品還鮮有報道[1].我們利用Ms Office內嵌的VBA(Visual Basic for Application),在編寫Word化學文檔時,通過添加控件,編寫簡單的VB代碼,巧妙地拓展了Word文檔的計算功能和學習功能,使一篇很普通的Word文檔變成了一個具有窗體形式和計算功能的文檔型化學計算器.現以“各種條件下的沉淀溶解度計算”軟件為例,介紹文檔型化學計算器的編寫方法.
各種沉淀溶解度計算是《分析化學》中重量分析的計算內容,情況復雜,計算繁瑣,涉及到前述的幾章內容.如果將相關內容進行梳理、歸納,無疑有助于相關知識的學習和理解,如果能在學習知識要點或計算公式的同時,隨時調入與之對應的化學計算器,進行任意條件下的化學實例計算,這將會使學習和運用相得益彰,有利于激發和調動學生的學習興趣,提高學習效率和實用功能.為此,我們選擇了用word文檔來編輯一個化學計算器——各種條件下的沉淀溶解度計算(化學計算器).
計算器面板基本框架:一張表格、少量文字、若干個計算窗體.通過表格中的按鈕控件調出計算面板.
“各種條件下的沉淀溶解度計算”的文檔部分見圖1:

圖1 軟件的文檔部分
文檔右欄中含各部分的計算鏈接,需要計算該類問題時,可以單擊"我要計算"按鈕,即可調出對應的計算面板.見圖2:

圖2 純水中的溶解度計算面板
它包括公式提示、基本的參數輸入及計算結果框、三個按鈕.對于各種情況下需要輸入的條件或參數(例如,含酸效應時需pH值、各級酸離解常數等),則在按下“計算”按鈕后,結合實際情況通過對話框方式輸入數據.這樣設計,既可使計算面板簡潔明了,又可增強計算的交互性.圖3是計算有酸效應的溶解度時彈出的pH值輸入框(對話框):

圖3 數據輸入的對話框
按下“確定”后還會彈出離解常數輸入框.數據輸入完畢,計算結果會顯示在圖2下部的溶解度文本框中(S).
MsOffice中已有大量的控件,要在Word文檔中插入控件,可在Word編輯界面下,點工具欄的“視圖/工具欄/控件工具箱”,便彈出圖標顯示的控件工具箱,單擊需要的按鈕、文本框、標簽等控件,控件就會插入到文檔的光標處,然后對插入的控件進行簡單編輯(改名、編輯字體、字號、顏色、調整控件大小等),對按鈕等控件,需編寫簡單的代碼,讓它來實現計算、賦值和提示功能.要在計算面板(窗體)中插入控件,可按下Alt+F11,調出VB編輯器,單擊工具欄的“插入/用戶窗體”,即可在右側出現一個新窗體(即計算面板),調整窗體大小,單擊工具欄的“視圖/工具箱”,調出控件工具箱,在窗體中添加必要的控件,并編輯控件,即得到了圖2所示的計算面板.
計算面板的計算功能是通過按鈕控件(也可通過其他控件)來觸發計算相關的子程序,根據輸入的數據和條件來完成計算.因此代碼編寫是必不可少的,但一般簡單的計算面板不需要編寫很復雜的代碼,通常用幾段常用代碼幾乎就可以“通吃”計算問題了.在設計或布置好計算面板的控件后,可以按下述介紹寫入幾段按鈕代碼(以純水溶解度計算為例):
2.2.1 “我要計算”按鈕的代碼
作用:調出計算面板.
代碼編寫:令控件處于“設計模式”,雙擊“純水”右側的“我要計算”,即彈出VBA的代碼編輯窗口:

圖4 VB編輯器窗口(代碼窗口)
純水中S計算的代碼見圖4中的加亮部分.該按鈕控件名稱為“純水S”,1、3句代碼都是系統自動生成的,填寫第2句.
“UserForm1純水.Show”的作用是加載純水中溶解度的計算面板(窗體名稱為“UserForm1純水”,自定義的),即顯示計算面板(圖2).其他“我要計算”的按鈕代碼與此相同,只需修改計算面板名稱即可(在本例中,各類計算都設計了各自的計算面板).
2.2.2 計算面板中各按鈕的代碼
計算面板中設計了“計算”、“退出”、“清空”三個按鈕,它們的作用和代碼如下:
(1)“退出”按鈕代碼
作用:關閉計算面板
代碼編寫:在VBA編輯窗口左側,雙擊“UserForm1純水”圖標(即打開純水的計算面板),再雙擊右邊計算面板中的“退出”按鈕,右邊變為代碼窗口,在中間代碼區填寫“Unload Me”:
Private Sub退出_Click()
Unload Me
End Sub
1、3 句是系統自動生成的.“Unload Me”是關閉當前窗體,即關閉計算面板.
(2)“清空”按鈕代碼
作用:將計算面板中的文本框數據清空為空白.
代碼編寫:雙擊計算面板中的“清空”按鈕,右邊變為代碼窗口,在中間填寫如下代碼:
Private Sub清空_Click()
TextBox1.text=""
TextBox2.text=""
TextBox3.text=""
TextBox4.text=""
End Sub
1、3 句是系統自動生成的.TextBox1到Tex tBox4是計算面板上四個文本框的名稱,TextBox1.text表示文本框內填寫或顯示的值(可以是數據或字符),代碼中的四個等式是賦值語句,表示清空文本框(雙引號里填入任何數據或字符,則在文本框中就“原樣”顯示該數據或字符).
(3)“計算”按鈕代碼
作用:利用計算面板中的文本框數據及其他來源的數據進行計算,得到溶解度值.
代碼編寫:雙擊計算面板中的“計算”按鈕,在右邊的代碼窗口中,填寫如下代碼:
Private Sub計算_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三個值是從計算面板中的文本框里取值的,它們都是字符串,需用Val()函數將它們轉換為數值,故有:m=Val(TextBox2.Text)等語句;因輸入了pKsp,計算要用Ksp,故需進行指數換算:Ksp=10^(-Val(Tex tBox1.Text)).s表達式為溶解度計算公式,最后計算得到的s值分別以信息框形式告知(用了MsgBox函數)和顯示在計算面板的文本框中(Tex tBox3.Text=s).
如果有其他影響時,“計算”代碼會略為復雜些.條件值可以通過對話框形式交互地輸入,可以用數組和循環語句來方便地實現.
當然,如果考慮到輸入數據時的一些失誤(如輸入負數或忘記輸入,錯按取消等),以及結果要以科學計數法表示等要求,還可以補充一些中斷和提示的代碼,在此不再詳述.
Ms Office中的VBA是一款拓展Office功能的內嵌軟件,利用VBA工具,在初步掌握一些編程知識的基礎上,可以用Word編寫化學軟件,圖文并茂,即時學習即時應用,提高化學電子文檔的實用性和廣泛性.
[1]羅剛君.Excel_VBA程序開發自學寶典[M].北京:電子工業出版社,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-),男,云南建水人,教授。研究方向:冶金分析和計算化學.
[責任編輯 張燦邦]