Как удалить последний элемент в VBA - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть следующее, которое добавляет 1 editBox и 1 comboBox каждый раз, когда я нажимаю кнопку в пользовательской форме:

Sub addCable()

    'TextBox creation
    Dim editTxtBox As MSForms.Control
    Static iTxtBox As Integer
    Set editTxtBox = Me.Controls.Add("Forms.TextBox.1")
    iTxtBox = iTxtBox + 1
    cbxs.Add editTxtBox
    ', editTxtBox.Name
    With editTxtBox
        .Name = "txtBox" & iTxtBox
        .Top = iTxtBox * editTxtBox.Height + 10
        .Left = 20
    End With

    'ComboBox creation
    Dim editCmpBox As MSForms.Control
    Static iCmpBox As Integer
    Set editCmpBox = Me.Controls.Add("Forms.ComboBox.1")
    iCmpBox = iCmpBox + 1
    cbxs.Add editCmpBox
    ', editCmpBox.Name
    With editCmpBox
        .Name = "cmBox" & iCmpBox
        .Top = iCmpBox * editCmpBox.Height + 10
        .Left = 130
        .List = Array("60", "125", "45")
    End With
End Sub

Я хочу реализовать функцию отмены, так как она удаляет последний exitBox и последний comboBox, созданный при нажатии на кнопку. Я думал обойти мою коллекцию cbxs и удалить ее по индексу iTxtBox, поскольку iTxtBox является глобальной переменной:

Dim num As Integer
MsgBox (iTxtBox)
    For num = iTxtBox To cbxs.Count
        cbxs.Remove iTxtBox
    Next

Но это не работает, я думаю, это потому, что мой цикл выходит за рамки, которые я ищу ....

...