返回列表 上一主題 發帖

[發問] 依欄數建立選項,並有相似程式指令

本帖最後由 lpk187 於 2015-6-16 22:23 編輯

回復 1# lyc43210


   
也不知對不對,呵呵!我也是練習
UserForm:
  1. Dim X_OB() As New Class1

  2. Private Sub UserForm_Initialize()
  3.     I = Cells(1, 1).End(xlToRight).Column
  4.     h = 0
  5.     ReDim X_OB(1 To I)
  6.     Dim myC As Control
  7.     For A = 1 To I
  8.         Set myC = Controls.Add(bstrprogid:="Forms.optionButton.1")
  9.         myC.Top = h
  10.         h = h + 20
  11.         myC.Caption = Cells(1, A)
  12.         Set X_OB(A).OB = Controls(A)
  13.     Next A
  14. End Sub
複製代碼
Class1:
  1. Public WithEvents OB As MSForms.OptionButton

  2. Private Sub OB_Click()
  3.     UserForm1.Label1 = OB.Caption
  4. End Sub
複製代碼

TOP

回復 4# lyc43210


   你沒有告知做了什麼樣的修改後產生問題。
所以很難去做出回答!
可以的話。把修改有問題的程式碼丟上來,這樣要回答你也比較有方向

TOP

本帖最後由 lpk187 於 2015-6-17 22:30 編輯

回復 4# lyc43210


  假設你是有其他控制項的話
  Set X_OB(A).OB = Controls(A)
這裡的變數A可以把它改成 Set myC = Controls.Add...新增控項的名稱
如下:
Set X_OB(A).OB = Controls(myC.Name)

原本的變數A是指到它的Controls序號位置,改名稱是會指向新增Controls控項的名稱

TOP

回復 7# lyc43210

TOP

回復 10# lyc43210

上傳你的檔案上來吧!

TOP

本帖最後由 lpk187 於 2015-6-18 01:05 編輯

回復 10# lyc43210

嗯!找出來的原因在Set X_OB(a ).OB = Controls(myC.Name)
原來的ReDim X_OB(15 To i)
陣列是從15開始
但For a = 1 To i - 14
這裡的 A變數則是從1開始和X_OB陣列的編號不同造成的錯誤所以要改成下列:
Set X_OB(a + 14).OB = Controls(myC.Name)

TOP

        靜思自在 : 手心向下是助人,手心向上是求人;助人快樂,求人痛苦。
返回列表 上一主題