返回列表 上一主題 發帖

[發問] checkbox新增及更名

[發問] checkbox新增及更名

小弟現在要做一個新增checkbox新增及同時改名之commonbottom
並且在按的同時 刪除舊有的checkbox 並新增 新的checkbox
以 第三列為listname
不過在第二次按下此bottom時會產生無法盡數刪除情形
會留下第一個checkbox無法更名  造成後面之checkbox名字皆錯
求解!! 感激不盡


CK刪除為刪除現有ckbox
函式如下
Sub CK刪除()
   Dim CK As Object
   For Each CK In ActiveSheet.OLEObjects
    If CK.Name Like "CheckBox*" Then
        CK.Delete
    End If
   Next
   End Sub

以下為程式碼

Private Sub CommandButton1_Click() '資料篩選
    Call CK刪除
   
    Range("A4:K4").Select
    Range("A4:K4", Selection.End(xlDown)).Select
   
    If Selection.Count > 999999 Then '不接受低於二筆資料處理
        MsgBox ("資料表輸入資料太少,請確認。")
        Exit Sub
    End If
   
    '2013/07/31 Test
    Range("A3").Select
    Range("A3", Selection.End(xlToRight)).Select
    ListCount = Selection.Columns.Count
    ComboBox1.Clear
    ReDim listname(ListCount - 1) As String
    For i = 0 To ListCount - 1
        If i <= 25 Then
            listname(i) = Range(Chr(65 + i) & "3").Text
        Else
            listname(i) = Range("A" & Chr(65 + i - 25) & "3").Text
        End If
        ComboBox1.AddItem listname(i)
    Next i
   
   
     '新增checkbox
     
     For i = 0 To ListCount - 1
        OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
        DisplayAsIcon:=False, Left:=0 + 93.5 * i, Top:=126, Width:=90, Height:=22.5).Select
     Next i
   
   
    'checkbox改名
     ReDim listname1(ListCount) As String
     For i = 1 To ListCount
        If i <= 25 Then
            listname1(i) = Range(Chr(64 + i) & "3").Text
        Else
            listname1(i) = Range("A" & Chr(64 + i - 25) & "3").Text
        End If
    Next i
   
     For i = 1 To ListCount
      Sheets("資料").OLEObjects("CheckBox" & i).Object.Caption = listname1(i)
     Next i

對了 補充一下 如果我把call ck刪除
獨立一個bottom出來處理  就不會有這個情況
合在一起才出現的

TOP

感謝大大的解答!
似乎把改名跟新增這兩個動作一起做的時候就不會出現這種問題??
如果分開寫有解嗎@@?

TOP

        靜思自在 : 並非有錢魷是快樂,問心無愧心最安。
返回列表 上一主題