VBA動態生成按扭及其對應的事件

2022-02-18 02:47:46 字數 1872 閱讀 6494

public

sub makebutton()

'動態生成乙個按鈕控制項

'動態生成事件

'dim i as

integer

dim strname as

string

dim varstrname() as

string

dim wsheet as worksheet

dim mynewbtn as oleobject

dim target as range

dim shtcodename as

string

dim linescount as

long

set wsheet = sheets("

sheet4

")shtcodename = wsheet.codename

wsheet.oleobjects.delete

set target = cells(15, 2)

strname = "

sheet1;sheet2;sheet3

"varstrname = split(strname, ";")

linescount = thisworkbook.vbproject.vbcomponents.item(shtcodename).codemodule.countoflines

thisworkbook.vbproject.vbcomponents.item(shtcodename).codemodule.deletelines 1, linescount

for i = 1to3

set mynewbtn = wsheet.oleobjects.add(classtype:="

forms.commandbutton.1

", link:=false _

, displayasicon:=false, left:=target.left + (i * 90), top:=target.top, width:=90, height:= _

30)mynewbtn.name = "

mynewbutton

" & i '

設定按鈕名

mynewbtn.object.caption = "

我的按鈕

" & i '

設定按鈕標題

'2、如果出現"不信任到visual basic project 的程式連線"的錯誤,解決方法為:

'開啟excel-》工具-》巨集-》安全性-》可靠發行商,選中「信任對於visiual basic 專案的訪問」,按確定即可。

'thisworkbook.vbproject.vbcomponents.item(shtcodename).codemodule.deletelines 1

with thisworkbook.vbproject.vbcomponents.item(shtcodename).codemodule

.insertlines 1 + ((i - 1) * 4), "

private sub mynewbutton

" & cstr(i) & "

_click()

".insertlines 2 + ((i - 1) * 4), "

sheets(""

" & varstrname(i - 1) & "

"").activate'msgbox ""生成事件成功""

".insertlines 3 + ((i - 1) * 4), "

'這是乙個注釋示例

".insertlines 4 + ((i - 1) * 4), "

end sub

"end

with

next i

end sub

如何動態獲取VBA變數動態型別(VBA基礎知識)

在使用vba變數的某些時候,我們需要獲知變數的儲存範圍,所以如何獲取變數型別是乙個重要點。通過變數型別,我們就很容易的獲取它的位元組數,從而卻動它的儲存範圍,就象c c 所用的sizeof var type 那樣。那麼擺在初學者面前的頭乙個問題就是如何獲得變數型別呢?幸運的是,vba提供了varty...

vba 陣列(動態陣列)

主要內容 本文章主要介紹vba中,陣列的使用,特別介紹動態陣列的使用,並有簡單事例,幫助理解。陣列是我們經常用到的儲存資料的一種媒介,他到底是什麼呢?陣列是具有相同資料型別並且共享乙個名字的一組變數的集合。通俗的說,陣列是變數。陣列的宣告 可以用dim語句或者public語句生命陣列。如 dim p...

JSP中乙個form多button按扭的使用

這兩天要用jsp寫個學生的資訊管理系統,我本來是想在乙個form中放好幾個submit,但實際上才知道這是不現實的,系統分辨不出來到底哪個submit是做什麼的,所以我在網上搜了下,找到了這個解決辦法。就是寫script指令碼 應該這麼說的吧,原諒我還是個初學者,可能會說錯,好了直接貼我的 了。我沒...