查看完整版本: excel VBA 迴圈更改控件名稱
頁: [1]

t0020497 發表於 2018-7-7 12:01 AM

excel VBA 迴圈更改控件名稱

請問,在excel VBA裡,我試著拉出10個Commandbutton
預設名稱為Commandbutton1~Commandbutton10
如果要改名子~寫成Commandbutton1.caption="xxx"之類的
,但太多個一個一個寫很麻煩
想利用迴圈一次性直接寫成Commandbutton1.caption=1
Commandbutton2.caption=2....以下類推
但都會顯示異常
是否Commandbutton這個控件,無法使用迴圈控制呢?

是否有精通的大德,可以教導
謝謝<div></div>

天蓬元帥 發表於 2018-7-7 09:48 PM

本帖最後由 天蓬元帥 於 2018-7-7 09:48 PM 編輯

因為不知道最後你的用意在哪,如果只是單純過程會用到
有一個不是辦法的辦法....先用迴圈寫出Commandbutton1.caption="XXX"的程式碼
之後再匯入(或貼上就好)
Sub Macro2()
For i = 1 To 10
Sheets("123").Cells(i, 1) = "Commandbutton" & i & ".caption=" & "XXX"
Next i
End Sub

t0020497 發表於 2018-7-8 07:14 AM

天蓬元帥 發表於 2018-7-7 09:48 PM static/image/common/back.gif
因為不知道最後你的用意在哪,如果只是單純過程會用到
有一個不是辦法的辦法....先用迴圈寫出Commandbutton ...

謝謝   我試試看                  
其實主要目的是想用變數控制控件的名稱而已

tryit244178 發表於 2018-7-8 10:45 AM

本帖最後由 tryit244178 於 2018-7-8 04:06 PM 編輯

記得以前VB6有個控制項的物件可以用,不知VBA有沒有…試試這個
For i = 1 To 3
   Controls("CommandButton" & i).Caption = "Test" & i
Next i

天蓬元帥 發表於 2018-7-8 03:16 PM

一樣顯示物件不支援此屬性或方法
網路爬文還沒找到解答
另外後來想想,其實也不用用迴圈,EXCEL直接公式拉就好 冏
<br><br><br><br><br><div></div>

Waroger 發表於 2018-7-10 10:46 PM

Dim a As Object, i As Integer
On Error Resume Next

For Each a In ActiveSheet.OLEObjects
    If TypeName(a.Object) = "CommandButton" Then
       If Left(a.Object.Caption, 13) = "CommandButton" Then
          a.Object.Caption = "Test" & i
          i = i + 1
       End If
    End If
Next
頁: [1]