csdn_淺談Excel 的VB編程淺談Excel 的VB編程
作者:蔣雲鵬
----
Excel是一個優秀的電子表格軟件,如果你編的程序需要以報表的形式顯示最終結果,它會是個不錯的選擇。你可以通過VB控制Excel顯示數據表格。如果你不願意深入瞭解Excel這些瑣碎的細節,也不是沒有權宜之計:你可以打開Excel中的工具→宏→錄製新宏,然後進行手工操作,結束後把所錄的宏代碼貼進你的VB程序就行。這樣得到的程序一般都能正常運行,但其中的宏代碼往往不夠簡潔,效率和可讀性都不高。
---- Excel編程碰到的第一個問題是表頭。有時表頭的形式比較複雜,需要橫向或縱向合併單元格。請放心,只要沒有斜槓,Excel都能應付得了。
---- 例如合併A2~A5這4個單元格,你錄製的宏代碼會是這樣:
Range("A2:A5").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
End With
Selection.Merge
---- 而自己編程只要一句 Range.(“A2:A5”).mergecells=True 就可以解決問題。
----
表頭形式定了,再就是表頭的內容。如果單元格中的文本長度超過了列寬,往往只能顯示部分內容,行尾那一格的內容則會“越境”進入右邊那個空白單元格,很不美觀。這個問題可以通過在程序中設置列寬加以解決。
---- Columns(14).columnwidth=12 ‘設置第14列列寬爲12(缺省列寬爲8.38)
---- 如果你不願意勞神去逐列估計實際所需的列寬,乾脆來一行
---- Columns(“a:i”).autofit ‘a到i列自動調整列寬
---- 讓Excel隨機應變吧。
----
但也許你不喜歡這種方法,認爲表頭撐大了列寬,弄得瀏覽一張小表格還得向右滾動,太不方便了。要是能保持默認列寬,讓文本自動換行就好了。沒問題,Excel包你滿意。
---- Rows(3).WrapText=True ‘讓第三行各單元格中的文本自動換行
---- 不過你最好再加一句 Rows(3) .VerticalAlignment = xlTop 讓表頭自動向上對齊,這樣比較符合習慣。
---- 你還可以給表頭打上底色,讓你的讀者不至於看了打哈欠。
---- Rows(2). Interior .ColorIndex = 5 '設置第2行底色爲藍色
---- 再給表格的標題上色,這樣更醒目一點。
---- Rows(1).Font.ColorIndex=4
---- 表頭完成後該填數據了,一個一個地填實在是太慢了,如果你的數據是存放在一個二維數組中,那問題就簡單多了。
Dim Data(3,4)
………… ‘數據處理
Range(“a2:d4”).Value=Data
----
這樣可以一次填入一個表的所有數據,夠快了吧!不過提醒一句,Range對象大小最好與數組匹配,小了無法顯示所有數據,大了則會在空白單元格只填入“N/A”表示沒有取得數據。
---- 如果需要在結果中顯示多個同樣規格的數據表,想在Range對象中加入循環變量,這也好辦。
Dim cell11,cell2
Dim Data(3,4)
…………
For I =1 to 40
………… ‘數據處理
Set cell1=Worksheets("Sheet1").Cells(5*I-4,1)
Set cell2=Worksheets("Sheet1").Cells(5*I-2,4)
Worksheets("Sheet1").Range(cell1,cell2).value=Data
Next I
---- 表格填完了,現在該打表格線了,以下幾條語句可以滿足你的要求:
With Worksheets("Sheet1").Range(cell1,cell2).borders
.LineStyle=xlContinuous
.weight=xlThin
End With
---- 好了,關於Excel的VB編程今天就講到這兒吧。
作者:蔣雲鵬
----
Excel是一個優秀的電子表格軟件,如果你編的程序需要以報表的形式顯示最終結果,它會是個不錯的選擇。你可以通過VB控制Excel顯示數據表格。如果你不願意深入瞭解Excel這些瑣碎的細節,也不是沒有權宜之計:你可以打開Excel中的工具→宏→錄製新宏,然後進行手工操作,結束後把所錄的宏代碼貼進你的VB程序就行。這樣得到的程序一般都能正常運行,但其中的宏代碼往往不夠簡潔,效率和可讀性都不高。
---- Excel編程碰到的第一個問題是表頭。有時表頭的形式比較複雜,需要橫向或縱向合併單元格。請放心,只要沒有斜槓,Excel都能應付得了。
---- 例如合併A2~A5這4個單元格,你錄製的宏代碼會是這樣:
Range("A2:A5").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
End With
Selection.Merge
---- 而自己編程只要一句 Range.(“A2:A5”).mergecells=True 就可以解決問題。
----
表頭形式定了,再就是表頭的內容。如果單元格中的文本長度超過了列寬,往往只能顯示部分內容,行尾那一格的內容則會“越境”進入右邊那個空白單元格,很不美觀。這個問題可以通過在程序中設置列寬加以解決。
---- Columns(14).columnwidth=12 ‘設置第14列列寬爲12(缺省列寬爲8.38)
---- 如果你不願意勞神去逐列估計實際所需的列寬,乾脆來一行
---- Columns(“a:i”).autofit ‘a到i列自動調整列寬
---- 讓Excel隨機應變吧。
----
但也許你不喜歡這種方法,認爲表頭撐大了列寬,弄得瀏覽一張小表格還得向右滾動,太不方便了。要是能保持默認列寬,讓文本自動換行就好了。沒問題,Excel包你滿意。
---- Rows(3).WrapText=True ‘讓第三行各單元格中的文本自動換行
---- 不過你最好再加一句 Rows(3) .VerticalAlignment = xlTop 讓表頭自動向上對齊,這樣比較符合習慣。
---- 你還可以給表頭打上底色,讓你的讀者不至於看了打哈欠。
---- Rows(2). Interior .ColorIndex = 5 '設置第2行底色爲藍色
---- 再給表格的標題上色,這樣更醒目一點。
---- Rows(1).Font.ColorIndex=4
---- 表頭完成後該填數據了,一個一個地填實在是太慢了,如果你的數據是存放在一個二維數組中,那問題就簡單多了。
Dim Data(3,4)
………… ‘數據處理
Range(“a2:d4”).Value=Data
----
這樣可以一次填入一個表的所有數據,夠快了吧!不過提醒一句,Range對象大小最好與數組匹配,小了無法顯示所有數據,大了則會在空白單元格只填入“N/A”表示沒有取得數據。
---- 如果需要在結果中顯示多個同樣規格的數據表,想在Range對象中加入循環變量,這也好辦。
Dim cell11,cell2
Dim Data(3,4)
…………
For I =1 to 40
………… ‘數據處理
Set cell1=Worksheets("Sheet1").Cells(5*I-4,1)
Set cell2=Worksheets("Sheet1").Cells(5*I-2,4)
Worksheets("Sheet1").Range(cell1,cell2).value=Data
Next I
---- 表格填完了,現在該打表格線了,以下幾條語句可以滿足你的要求:
With Worksheets("Sheet1").Range(cell1,cell2).borders
.LineStyle=xlContinuous
.weight=xlThin
End With
---- 好了,關於Excel的VB編程今天就講到這兒吧。