999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Excel VBA中列表框數據的動態填充

2010-12-31 00:00:00
考試周刊 2010年8期

摘 要: 本文基于Microsoft Office Excel應用軟件,利用Excel 開放的Visual Basic編輯器,以VBA語言為基礎,針對VBA開發中列表框數據動態填充的問題, 給出了使用Additem方法和使用動態數組兩種設計方法和程序。

關鍵詞: Excel VBA列表框 動態數據填充

作為微軟公司常用辦公軟件Microsoft Office的重要組件之一,Microsoft Excel是一款電子表格處理軟件,它的基本功能是進行各種數據的處理、統計分析和輔助決策操作。Excel的應用往往不可避免地需要進行大量的數據錄入,錄入的效率和數據的規范制約著Excel軟件的使用效率,所以在Excel實際的使用中,經常會借助于使用Visual Basic For Application(VBA)來開發一些小型的輔助工具完成工作,這樣既可以在一定程度上提高效率,又可以保證數據的規范性。

在使用Excel VBA進行的程序開發中,經常會使用到列表框控件(ComboBox)以提供現有數據供用戶選擇。列表框的數據填充,可以使用預定義的方法,即在程序設計時將菜單數據固化在控件中,也可以在程序運行過程中使用語句進行數據的動態填充。動態填充主要采用兩種方法:使用列表框本身的Additem方法和使用數組對列表框的List屬性進行賦值。

1. Additem方法介紹

Additem方法的作用為列表框或組合框添加數據項。其語法為:

expression.AddItem(Text,Index)。

expression為必選。該表達式返回一個ControlFormat 對象。

Text參數為String類型,必選,表示要添加的文字。

Index參數Variant類型,可選,表示新輸入項的輸入位置。如果列表中數據項數目少于指定索引號,則從列表末尾開始添加多個空數據項到指定索引號的位置。如果省略該參數,則將此數據項添加到現有列表中。

使用Additem方法的范例:

ComboBox1.Additem\"09春直屬工商企\"

上例是為列表框ComboBox1添加一個新數據項,“09春直屬工商企”為該數據項的文字。新添加的數據位于該列表框的最后。

2.Excel VBA中的數組介紹

Excel VBA中可以聲明一個數組來代表一群具有相同數據類型的值。數組是單一類型的變量,它具有很多的隔室來存儲很多值,而常規的變量只有一個存儲隔室,所以只能存儲一個值。

Excel VBA中的數組分為靜態數組和動態數組。

靜態數組在聲明時具有固定大小,在程序運行過程中不可對數組長度進行更改。

動態數組是指在聲明時沒有確定數組大小的數組,可以在執行代碼時去改變數組大小。相對于靜態數組,動態數組在使用中可以根據程序運行需要對數組進行擴展,所以更具有靈活性。在本文中示范的數據填充使用的是動態數組。

動態數組定義的范例:

Dim ArrayName( )As Single

上例中定義的動態數組ArrayName,其數據類型為Single。除Dim外,也可以使用 Static、Private或Public語句來聲明數組,并使括號內為空。

在程序運行過程中可以使用ReDim語句更改動態數組,但是做這個動態數組時,數組內存在的值會消失。如果要保留原來的值,則可以使用ReDim Preserve語句來擴充數組。下例語句是將ArrayName( )數組擴充了1個元素,而原本數組中的值并沒有消失:

ReDim Preserve ArrayName(UBound(ArrayName)+1)

其中的UBound( )函數的作用是確定數組的指定維的最大可用下標。

3.基本設計

為描述方便,本文使用圖1中的列表框和圖2中的表格數據進行描述。其中數據是從Excel表格中“臨時表”中的第一列數據(圖1),通過動態數組將其填充到VBA程序中的列表框ComboBox1內(圖2)。

4.實現方法

4.1使用Additem方法進行數據填充

4.1.1定義索引變量i,用于遍歷表格數據。

dim i as integer

4.1.2讀取數據并添加到列表框ComboBox1中。其中表格數據存放在表格“臨時表”中的第一列,數據從第一行開始,默認為遇到空單元格即為數據結束。代碼如下:

With臨時表′對表格“臨時表”進行操作

i=1 ′設置索引變量初始值,使其指向表格中第一行

While.Cells(i,1)<>\"\"′判斷當前行第一列單元格是否為空,為空則退出循環

ComboBox1.Additem.Cells(i,1)′將當前行第一列單元格的內容填充到ComboBox1中

i=i+1′索引指向下一行

Wend

End With

4.2使用動態數組進行數據填充

4.2.1定義存放數據的動態數組temp( )。

Dim temp( )As String

4.2.2定義變量。其中索引變量j為,用于遍歷表格數據;ArrLength存放的是動態數組的長度。

dim j,ArrLength as integer

4.2.3讀取數據并存入數組。表格數據存放格式與3.1相同。代碼如下:

ArrLength=0 ′記錄動態數組的長度

With臨時表′對表格“臨時表”進行操作

j=1′設置索引變量初始值,使其指向表格中第一行

While.Cells(j,1)<>\"\" ′判斷當前行第一列單元格是否為空,為空則退出循環

ArrLength=ArrLength+1 ′增加動態數組長度

ReDim Preserve temp(ArrLength)′以新的長度擴展數組,并保留原有數據

temp(ArrLength-1)=Cells(j,1)′將單元格內容添加到數組最后,因為VBA中數組起始索引為0,所以數組最后 一個元素的索引應是數組長度-1

j=j+1 ′索引指向下一行

Wend

End With

通過上述代碼,程序將所有需要填充入列表框的數據全部存入動態數組temp(圖3)。

4.2.4使用動態數組數據對列表框進行數據填充

在數據存入動態數組后,對列表框的填充就變的簡單了,只需要將數組temp賦值給列表框ComboBox1的List屬性就可以。代碼如下:

ComboBox1.List=temp

5.需要注意的問題

在對列表框進行數據填充的時候需要注意一些問題。

5.1對列表框的數據填充可清除由ListFillRange 屬性指定的任何區域。

ListFillRange屬性返回或者設置用于填充指定列表框的工作表區域,String類型,可讀寫。對該屬性進行設置將破壞列表框中的所有列表項。

5.2使用ReDim語句擴展動態數組時不能拼錯數組名。

動態數組可以在過程中使用ReDim語句來做數組擴展。當使用ReDim語句時不能拼錯數組的名稱。否則即使在模塊中有包含Option Explicit語句,仍然會因此而生成第二個數組。

5.3對動態數組進行擴展時需使用Preserve關鍵字保留原來的數據。

對于過程中的動態數組的大小,可以使用ReDim語句去改變它的維數,定義元素的數目以及每個維數的底層綁定。每當需要時,可以使用ReDim語句去更改動態數組。然而當做這個動作時,數組中存在的值會丟失。若要保存數組中原先的值,則可以使用ReDim Preserve語句來擴充數組。當對動態數組使用Preserve關鍵字時,只可以改變最后維數的上層綁定,而不能改變維數的數目。

6.結語

本文給出了Excel VBA中對列表框進行動態數據填充的兩種方法。從比較上看,使用Additem方法進行填充,代碼較為簡單,程序流程更加簡潔;而使用動態數組進行填充,雖然在算法上較前者復雜一些,但是因為使用數組進行數據的中轉,在填充之前可以對數組中的數據進行較為復雜的操作,比如數據排序等,功能擴展更為靈活。我們在實際使用中應當根據需要選擇合適的方法。

本文范例中的源數據是Excel表格中的數據,其他來源的數據,例如程序動態計算的結果、用戶外部輸入的數據等都可以套用該方法。

參考文獻:

[1]陳代國,朱志富.基于VBA的EXCEL成績分類統計[J].辦公自動化,2009,(02).

[2]郭海濱.Excel中提高VBA效率的方法研究[J].硅谷,2009,(03).

[3]劉靜.VBA在Excel中的應用[J].科技信息,2009,(08).

[4]李生山.淺談VB程序設計要素——數組[J].科技信息,2008,(32).

主站蜘蛛池模板: 国产黄色视频综合| 欧美视频免费一区二区三区 | 亚洲一区黄色| 欧美成人影院亚洲综合图| 精品一区二区三区自慰喷水| 欧美激情视频一区| 亚洲成人播放| 久操线在视频在线观看| 尤物国产在线| 国产精品自拍露脸视频| 欧美色综合网站| 日韩大片免费观看视频播放| 国产午夜看片| 超碰aⅴ人人做人人爽欧美 | 欧美性猛交一区二区三区| 久久精品人人做人人爽| 国产在线欧美| 欧美日韩久久综合| 蝴蝶伊人久久中文娱乐网| 3p叠罗汉国产精品久久| 国产剧情伊人| 久久国产拍爱| 成年片色大黄全免费网站久久| 国产va在线观看免费| 亚洲精品人成网线在线| 特级做a爰片毛片免费69| 99视频在线精品免费观看6| 国产杨幂丝袜av在线播放| 黄色福利在线| 久久婷婷六月| 精品一區二區久久久久久久網站 | 亚洲三级色| 久久久久久国产精品mv| 99免费视频观看| 四虎免费视频网站| 91黄色在线观看| 欧美成人第一页| 亚洲福利片无码最新在线播放| 97视频免费在线观看| 日韩欧美国产综合| 中文字幕在线视频免费| 中国一级毛片免费观看| 国产chinese男男gay视频网| 欧美三级视频网站| 国产av剧情无码精品色午夜| 精品无码国产一区二区三区AV| 成人日韩视频| 911亚洲精品| 88av在线| a级免费视频| 波多野结衣一区二区三视频| 亚洲第一天堂无码专区| 国产丝袜精品| 五月激激激综合网色播免费| 高清久久精品亚洲日韩Av| 亚洲精品桃花岛av在线| 久久久久人妻精品一区三寸蜜桃| 国产午夜看片| 成人福利在线免费观看| 91色在线观看| 中文字幕欧美日韩| 91精品小视频| 亚洲精品在线影院| 最新日韩AV网址在线观看| 一区二区三区毛片无码| 国产成人av大片在线播放| 久青草国产高清在线视频| 91黄色在线观看| 亚洲最黄视频| 国产午夜无码专区喷水| 亚洲欧洲自拍拍偷午夜色无码| 天堂在线亚洲| 狠狠色丁婷婷综合久久| av在线5g无码天天| 五月婷婷导航| 日韩免费毛片| 911亚洲精品| 国产精品黄色片| 免费A级毛片无码免费视频| 午夜免费视频网站| 国产福利在线观看精品| 欧美中文一区|