Excel VBA, реагирующий на нажатие объекта флажка OLE, также блокирует клавиатуру - но почему? - PullRequest
0 голосов
/ 18 мая 2018

У меня есть флажок «Check_Group» на рабочем листе «Рабочий лист ценообразования FA 2.0».У меня есть подпрограмма, определенная в указанном рабочем листе, которая изменяет некоторые значения в другом месте, когда пользователь нажимает на нее:

Private Sub Check_Group_Click()

    Active = ActiveSheet.Name
    Sheets("FA 2.0 Pricing Worksheet").Activate 'This activate has to happen here because there are some steps in a different routine where this checkbox has to be clicked programmatically
    If ActiveSheet.OLEObjects("Check_Group").Object.Value = True Then
        Sheets("FA 2.0 Risk Checklist").Range("UI_GROUP_RISK").Value = "No"
    Else
        Sheets("FA 2.0 Risk Checklist").Range("UI_GROUP_RISK").Value = "Yes"
    End If
    Sheets(Active).Select

End Sub

Это работает как шарм, за исключением того, что я заметил особенно раздражающий побочный эффект - клавиатура кажетсязаблокировать после нажатия на него!

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

Я подтвердил с помощью отладчика, что EnableEvents и ScreenUpdating оба включены.

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

Это в Excel 2016.

Почему моя подпрограмма блокирует клавиатуру?

1 Ответ

0 голосов
/ 19 мая 2018

Нет необходимости активировать лист для выполнения вашего кода.И, когда вы находитесь в модуле кода листа, вы можете обратиться к листу, используя Me

Private Sub Check_Group_Click()
    Me.Range("UI_GROUP_RISK").Value = IIf(Me.Check_Group.Value, "No", "Yes") 
End Sub
...