Удалите все флажки ActiveX, а затем создайте новые, начиная с 1 - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть кнопка, которая создает флажки. Если я нажму его снова, я хочу удалить предыдущие установленные флажки и заменить их новыми. Это код для удаления и создания новой детали:

Dim s As Shape
For Each s In ActiveSheet.Shapes
    If s.Type = 12 Then
        If Not Intersect(s.TopLeftCell, Sheets("EmpChoice").Range("A14:T33")) Is Nothing Then
            s.Delete
        End If
    End If
Next
Dim obj As Object
Dim rng As Range


For i = 1 To EmployeeNo
If i > 6 And i < 13 Then   'Just code that spaces the checkboxes out evenly
    col = 3
    offset = 12
ElseIf i >= 13 Then
    col = 5
    offset = 24
Else
    col = 1
    offset = 0
End If
Set rng = Sheets("EmpChoice").Cells(14 + (i * 2) - offset, col)
    cellLeft = rng.Left
    cellTop = rng.Top
    cellwidth = rng.Width
    cellheight = rng.Height


Set obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Checkbox.1", Left:=cellLeft, Top:=cellTop, Width:=cellwidth * 2, Height:=cellheight * 2)
ActiveSheet.OLEObjects("CheckBox" & i).Object.Caption = EmployeeList(i)
Next i

Проблема в том, что если код создает 18 флажков, а затем удаляет их, новые начинаются с имени «CheckBox19», что приводит к сбою кода , Можно ли убедиться, что новые флажки начинаются с «CheckBox1»?

1 Ответ

2 голосов
/ 19 апреля 2020

Попытка вставить имя объекта, как в следующем фрагменте кода:

Set obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Checkbox.1", Left:=cellLeft, Top:=cellTop, Width:=cellwidth * 2, Height:=cellheight * 2)
obj.Name = "CheckBox" & i 'Here you can choose the name you need...
                          'Otherwise, VBA keeps track of the previous created objects
ActiveSheet.OLEObjects("CheckBox" & i).Object.Caption = EmployeeList(i)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...