Создание списков ActiveX блокирует Excel - PullRequest
0 голосов
/ 25 февраля 2020

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

Private Sub CreatePlayerSelectorComboBoxes()
    Application.ScreenUpdating = True
    Dim currStatusBarMgr As StatusBarManager
    Set currStatusBarMgr = New StatusBarManager
    currStatusBarMgr.MessagePrefix = "Creating Control: "
    With MatchesTeamPlayersWS
        .Range(.Cells(17, 1), .Cells(17, .UsedRange.Columns.Count)).ClearContents
        Dim matchCounter As Long
        For matchCounter = 1 To 6
            Dim controlColumnMatch As Long
            controlColumnMatch = ((matchCounter - 1) * 24)
            Dim matchText As String
            matchText = "M" & matchCounter
            Dim teamCounter As Long
            For teamCounter = 1 To 2
                Dim controlColumnTeam As Long
                controlColumnTeam = ((teamCounter - 1) * 12)
                Dim teamText As String
                Select Case teamCounter
                    Case Is = 1
                        teamText = "TmA"
                    Case Is = 2
                        teamText = "TmB"
                End Select
                Dim positionCounter As Long
                For positionCounter = 1 To 4
                    Dim positionText As String
                    positionText = "P" & positionCounter
                    Dim controlText As String
                    controlText = matchText & teamText & positionText
                    Dim currDivAControlName As String
                    currDivAControlName = "DivA" & controlText
                    Dim currDivBControlName As String
                    currDivBControlName = "DivB" & controlText
                    Dim controlColumnPosition As Long
                    controlColumnPosition = 3 + ((positionCounter - 1) * 3)
                    Dim controlColumn As Long
                    controlColumn = controlColumnMatch + controlColumnTeam + controlColumnPosition
                    Dim controlCell As Range
                    Set controlCell = .Cells(17, controlColumn)
                    currStatusBarMgr.PostStatusBarUpdate (currDivAControlName)
                    Debug.Print currDivAControlName
                    Dim controlDivA As Variant
                    Set controlDivA = .OLEObjects.Add(ClassType:="Forms.ComboBox.1", _
                                        Link:=False, _
                                        DisplayAsIcon:=False, _
                                        Left:=controlCell.Left, _
                                        Top:=controlCell.Top, _
                                        Width:=140, _
                                        Height:=24)
                    controlDivA.Name = currDivAControlName
                    currStatusBarMgr.PostStatusBarUpdate (currDivBControlName)
                    Debug.Print currDivBControlName
                    Dim controlDivB As Variant
                    Set controlDivB = .OLEObjects.Add(ClassType:="Forms.ComboBox.1", _
                                        Link:=False, _
                                        DisplayAsIcon:=False, _
                                        Left:=controlCell.Offset(0, 144).Left, _
                                        Top:=controlCell.Offset(0, 144).Top, _
                                        Width:=140, _
                                        Height:=24)
                    controlDivB.Name = currDivBControlName
                Next
            Next
        Next
    End With
    Application.ScreenUpdating = True
End Sub

Если я закомментирую части, предназначенные для создания комбинированных блоков, запускается код. Я проверил назначения Set, и они кажутся синтаксически правильными. Я также позаботился о том, чтобы имена были уникальными.

Я разрешил запускать и запускать Excel ... Все, что я получаю, это [работает] ... пока я не принудительно завершу работу с Excel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...