伊莉討論區

標題: excel VBA 迴圈更改控件名稱 [打印本頁]

作者: 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這個控件,無法使用迴圈控制呢?

是否有精通的大德,可以教導
謝謝
作者: 天蓬元帥    時間: 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
因為不知道最後你的用意在哪,如果只是單純過程會用到
有一個不是辦法的辦法....先用迴圈寫出Commandbutton ...

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

作者: tryit244178    時間: 2018-7-8 10:45 AM

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

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


作者: 天蓬元帥    時間: 2018-7-8 03:16 PM

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

作者: Waroger    時間: 2018-7-10 10:46 PM

  1. Dim a As Object, i As Integer
  2. On Error Resume Next

  3. For Each a In ActiveSheet.OLEObjects
  4.     If TypeName(a.Object) = "CommandButton" Then
  5.        If Left(a.Object.Caption, 13) = "CommandButton" Then
  6.           a.Object.Caption = "Test" & i
  7.           i = i + 1
  8.        End If
  9.     End If
  10. Next
複製代碼






歡迎光臨 伊莉討論區 (http://www97.eyny.com/) Powered by Discuz!