返回列表 上一主題 發帖

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

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

我想依照工作表的欄數
建立同樣數量的選項按紐

每個選項選取後
都能顯示該選項的內容

目前以查到的 我只會寫增加選項
每個選項的程式碼不知怎麼寫

還請各位高手指導
謝謝
  1. Private Sub UserForm_Initialize()
  2.     i = Cells(1, 1).End(xlToRight).Column
  3.     h = 0
  4.     Dim myC As Control
  5.    
  6.     For a = 1 To i
  7.         Set myC = Controls.Add(bstrprogid:="Forms.optionButton.1")
  8.         myC.Top = h
  9.         h = h + 20
  10.         myC.Caption = Cells(1, a)
  11.     Next a
  12. End Sub

  13. '每個按鈕都是類似這樣的功能
  14. Private Sub OptionButton1_Change()
  15.     Label1.Caption = OptionButton1.Caption
  16. End Sub
複製代碼

回復 12# lpk187

成功解決了!
原來是這地方的問題
謝謝你

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

回復 10# lyc43210

上傳你的檔案上來吧!

TOP

回復 8# lpk187

那樣修改後,又可以正常執行了
但加入我的程式後又不行了
然後又出現不同的錯誤

擷取.PNG
  1. Private Sub UserForm_Initialize()
  2.     i = Sheets(1).Cells(1, 1).End(xlToRight).Column
  3.     h = 336
  4.    
  5.     If i > 14 Then
  6.         ReDim X_OB(15 To i)
  7.         Dim myC As Control
  8.         For a = 1 To i - 14
  9.             Set myC = Controls.Add(bstrprogid:="Forms.optionButton.1")
  10.             With myC
  11.                 .Caption = "        " & Sheets(1).Cells(1, a + 14).Value
  12.                 .font.Name = "微軟正黑體"
  13.                 .font.Size = 12
  14.                 .font.Bold = True
  15.                 .ForeColor = &HFFFFFF
  16.                 .BackColor = &HFFE66F
  17.                 .Height = 21.75
  18.                 .Width = 144.75
  19.                 .Left = -12
  20.                 h = h + 24
  21.                 .Top = h
  22.                 Sheets(2).ScrollHeight = h + 24
  23.                
  24.             End With
  25.             Set X_OB(a).OB = Controls(myC.Name)
  26.         Next a
  27.     End If
  28. End Sub
複製代碼

TOP

回復 7# 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

回復 6# lpk187

剛剛開個新工作表  重新測試
上面完整一模一樣的程式碼 直接放入
卻都會出現錯誤
不過之前都是可以的

擷取.PNG

TOP

回復 4# lyc43210


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

TOP

回復 3# bobomi
還是新手 看不懂意思
可以麻煩前輩 多解釋一點嗎
感謝

TOP

        靜思自在 : 靜坐常恩己過、閒談莫論人非。
返回列表 上一主題