Vb對excel操作的例項

來源:酷知科普網 2.85W

最近,由於工作關係,我用 vb6.0 做了一個計算成績的軟體,由於我不會資料庫技術,同行對excel 應用又比較普遍,所以就用 vb6.0 操作 excel 完成了成績統計的任務。

操作方法

(01)先說說窗體,很簡單,只運用了選單,由此來呼叫程式程式碼。窗體命名為 excel 操作,共五個一級選單。

Vb對excel操作的例項

(02)建立表冊用來製作所用表格。

Vb對excel操作的例項 第2張

(03)計算成績用來算成績。

Vb對excel操作的例項 第3張

(04)模擬運算用來測試軟體,設定了兩個子選單,一個填隨機生成的資料。有了資料就可以計算成績了,看看效果如何。

Vb對excel操作的例項 第4張
Vb對excel操作的例項 第5張

(05)測試完了就可以清空資料了,清空成績冊中的基礎資料以後再計算一次成績就基本可以使表冊恢復原樣了。其實,我這是多此一舉,回頭一想,只需要重新建立所用表冊就行了。還畫蛇添足了倆選單:計算器和退出。

(06)程式碼也貼出來共享一下。計算成績:一年級:Private Sub yinianji_Click()Call 開啟工作表Call 算成績 (1)kmb(1) = " 語文 ": kmb(2) = " 數學 ": kmb(3) = " 英語 "Sheets(kmb(1))ctFor i = 1 To 8   ' 記錄一年級語文資料With bj(i) = Cells(2, i + 1) = Cells(3, i + 1) = Cells(4, i + 1) = Cells(5, i + 1)r = Cells(6, i + 1)r = Cells(7, i + 1) = Cells(8, i + 1) = kmb(1) = 1End WithNextSheets(kmb(2))ctFor i = 1 To 8   ' 記錄一年級數學資料With bj(i + 8) = Cells(2, i + 1) = Cells(3, i + 1) = Cells(4, i + 1) = Cells(5, i + 1)r = Cells(6, i + 1)r = Cells(7, i + 1) = Cells(8, i + 1) = kmb(2) = 1End WithNextDim hgrs(8)   ' 記錄各學校合格人數For i = 1 To 8Sheets(xx(i))ctszl = h(" 總分 ", Range([a2], [f2])) ' 總分所在列即合格人數所在列szh = h(" 合格人數 ", Range(Cells(2, szl), Cells(80, szl))) '“合格人數”所在行hgrs(i) = Cells(szh + 2, szl)Next' 向學校總評表過錄一年級資料nj(1) = " 一年級 ": nj(2) = " 二年級 ": nj(3) = " 三年級 ": nj(4) = " 四年級 ": nj(5) = " 五年級": nj(6) = " 六年級 " FileName:= & " 學校總評 "For i = 1 To 16With Sheets(" 積分 ")Sheets(" 積分 ")ct[a1] = " 年級 ": [a2] = " 學科 ": [a3] = " 學校 ": [a4] = " 人數 ": [a5] = " 總分 ": [a6] = " 及格人數 ": [a7] = " 優秀人數 ": [a8] = " 積分 "s(1, i + 1) = nj(bj(i))s(2, i + 1) = bj(i)s(3, i + 1) = bj(i)s(4, i + 1) = bj(i)s(5, i + 1) = bj(i)s(6, i + 1) = bj(i)s(7, i + 1) = bj(i)s(8, i + 1) = bj(i)End FileName:= & " 上報 "With Sheets(" 中心校 ") ' 過錄中心校成績s(bj(1) * 2 + 2, 3) = bj(1) + bj(2) + bj(6)  ' 語文s(bj(1) * 2 + 2, 4) = bj(1) + bj(2) + bj(6)s(bj(1) * 2 + 2, 5) = Round(s(bj(1) * 2 + 2, 4) / s(bj(1) * 2 + 2, 3), 2)s(bj(1) * 2 + 2, 6) = bj(1)r + bj(2)r + bj(6)s(bj(1) * 2 + 2, 7) = bj(1)r + bj(2)r + bj(6)s(bj(1) * 2 + 2, 8) = hgrs(1) + hgrs(2) + hgrs(6)s(bj(1) * 2 + 3, 3) = bj(9) + bj(10) + bj(14)  ' 數學s(bj(1) * 2 + 3, 4) = bj(9) + bj(10) + bj(14)s(bj(1) * 2 + 3, 5) = Round(s(bj(1) * 2 + 3, 4) / s(bj(1) * 2 + 3, 3), 2)s(bj(1) * 2 + 3, 6) = bj(9)r + bj(10)r + bj(14)s(bj(1) * 2 + 3, 7) = bj(9)r + bj(10)r + bj(14)s(bj(1) * 2 + 3, 8) = hgrs(1) + hgrs(2) + hgrs(6)End WithWith Sheets(" 普小 ") ' 過錄普小成績s(bj(1) * 2 + 2, 3) = bj(3) + bj(4) + bj(5) + bj(7) + bj(8) ' 語文s(bj(1) * 2 + 2, 4) = bj(3) + bj(4) + bj(5) + bj(7) + bj(8)s(bj(1) * 2 + 2, 5) = Round(s(bj(1) * 2 + 2, 4) / s(bj(1) * 2 + 2, 3), 2)s(bj(1) * 2 + 2, 6) = bj(3)r + bj(4)r + bj(5)r + bj(7)r + bj(8)s(bj(1) * 2 + 2, 7) = bj(3)r + bj(4)r + bj(5)r + bj(7)r + bj(8)s(bj(1) * 2 + 2, 8) = hgrs(3) + hgrs(4) + hgrs(5) + hgrs(7) + hgrs(8)s(bj(1) * 2 + 3, 3) = bj(11) + bj(12) + bj(13) + bj(15) + bj(16) '數學s(bj(1) * 2 + 3, 4) = bj(11) + bj(12) + bj(13) + bj(15) + bj(16)s(bj(1) * 2 + 3, 5) = Round(s(bj(1) * 2 + 3, 4) / s(bj(1) * 2 + 3, 3), 2)s(bj(1) * 2 + 3, 6) = bj(11)r + bj(12)r + bj(13)r + bj(15)r + bj(15)s(bj(1) * 2 + 3, 7) = bj(11)r + bj(12)r + bj(13)r + bj(15)r + bj(16)s(bj(1) * 2 + 3, 8) = hgrs(3) + hgrs(4) + hgrs(5) + hgrs(7) + hgrs(8)End WithUnload excel 操作End Sub

(07)框架已經完成,可以看出,解除安裝窗體的動作很頻繁。這是我除錯的結果,這樣才能保證每次的動作都能順利完成。我想這就是單窗體的特點吧。被呼叫的程式模組也挺多的,系統包也呼叫了,最頻繁的就是開啟檔案對話方塊的呼叫。

(08)哦,還得說明一下,對 excel 的操作前提:Dim xlApp As icationDim xlBook As bookDim xlSheet As sheet本軟體中,我第一次用了自定義類的資料型別。Private Type banjixxmc As Stringbjkm As Stringnjxh As Integerxkrs As Integerdkjs As Stringxkzf As Integerxkjgr As Integerxkyxr As Integerxkjf As LongEnd Type並設了一陣列 Dim bj(16) As banji 來從年級成績冊向學校總評表過錄資料。設了八個學校名稱 Dim xx(8) ,設了 3 個科目表 Dim kmb(1 To 3) As String ,六個年級 Dim nj(1 To 6) As String ,班級人數為六個年級八個學校的二維陣列 Dim gbrs(6, 8) 。

特別提示

由於篇幅限制,有些程式沒有發出來。

熱門標籤