最近要做個專案,通過
office vba
來自動生成一系列的控制項(包括文字框、直線等),並將這些控制項組合在一起(這在
office
裡很好實現,只要選中這些控制項,使用上下文選單裡的組合選單項即可)。最開始的**如下:
dim element1, element2
dim i
asinteger
set element1 =
nothing
set element2 =
nothing
for i =
0to7
30,
30,
25,
25)if
not (element2
isnothing)
then
activedocument.shapes.range(array(element1.name, element2.name)).select
selection.shaperange.group.select
set element2 = selection.shaperange
else
set element2 = element1
endifnext i
上面的**生成了8個
textbox
,將其兩個為一組進行組合。這樣做雖然從技術上沒問題。但是如果生成的
textbox
很多的話,如
1000
個,就會很慢。主要把時間消耗在了是用
vba進行組合操作上。因此,只要將組合的方式改為將所有控制項都選中,然後組合一次就可以解決這個問題。在上面的**中,使用了
array
函式生成了
variant
型別的陣列。而使用
array
函式是無法根據實際需要生成實際大小的陣列的。因此,需要使用
dim來定義這個陣列,**如下:
dim elements(
0to7)
as variant
dim i
asinteger
for i =
0to7
addtextbox(msotextorientationhorizontal, i *
30,
30,
25,
25).name
next i
activedocument.shapes.range(elements).select
selection.shaperange.group.select
應使用dim elements(陣列上標 to陣列下標)的形式,不能使用dim elements(陣列下標)的形式。如上面的陣列定義**不能寫成dim elements(7) as variant。
如果在程式執行時改變陣列的大小,可以使用如下的**:
dim elements(
0to7)
as variant
dim newelements
as variant
dim i
asinteger
for i =
0to7
addtextbox(msotextorientationhorizontal, i *
30,
30,
25,
25).name
next i
newelements = elements
redim
preserve newelements(
0to10)
as variant
for i =
8to10
addtextbox(msotextorientationhorizontal, i *
30,
200,
25,
25).name
next i
activedocument.shapes.range(newelements).select
selection.shaperange.group.select
要注意的是,在使用
redim
時,不能使用已經指定型別的陣列,而需要將這個陣列放到
variant
變數中。如不能使用如下的**來增加陣列長度:
redim
preserve elements(
0to10)
as variant
銀河使者
用Office VBA實現多控制項一次性組合
最近要做個專案,通過 office vba 來自動生成一系列的控制項 包括文字框 直線等 並將這些控制項組合在一起 這在 office 裡很好實現,只要選中這些控制項,使用上下文選單裡的組合選單項即可 最開始的 如下 dimelement1,element2 dimi asinteger setel...
用c 實現的語法高亮控制項
用c 實現了乙個能夠對vbscript,c j sql顯示語法高亮的文字編輯控制項。這裡詳細介紹一下它的原理。如果需要解析其他語言,請新增相應的xml檔案,並修改列舉型別languages以及parser類的建構函式中的相應 已知bug 當兩個詞是由括號分割的時候,程式無法識別。比如function...
iOS UIProgressView控制項用法
ios中進度條控制項的用法總結。進度條控制項是ios開發中乙個簡單的系統控制項,使用總結如下 初始化乙個進度條 instancetype initwithprogressviewstyle uiprogressviewstyle style 注意 1.用這個方式初始化的進度條系統會預設給乙個長度。2...