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