У меня возникла проблема с тиражированием в Excel 2016.
Я создал приложение, которое будет работать безупречно в Excel 2010, но не в Excel 2016. В приложении пользователь выбирает книгу, из которой ему будет предложено выбрать несколько отдельных диапазонов.
Существует форма с несколькими кнопками, каждая из которых просит их выбрать диапазон, связанный с конкретным элементом из ранее выбранной книги.
При нажатии кнопки выбранная рабочая книга должна быть активной, чтобы они могли выбирать диапазон. Это имеет место в Excel 2010, но не в Excel 2016.
В Excel 2016 книга, в которой существует пользовательская форма, продолжает отображаться вместо выбранной книги.
Чтобы воспроизвести проблему, выполните следующие шаги:
- Открыть Excel 2016
- Создание 2х рабочих книг
- В Рабочей книге 1 создайте форму пользователя
- Создайте командную кнопку с кодом ниже.
- Активировать рабочую книгу1
- Инициализируйте форму и нажмите кнопку
- Выберите любой диапазон (Workbook2 должен быть активен)
- Нажмите кнопку еще раз ...
Проблема: Workbook2 больше не активен при выборе второго диапазона. (Excel 2010 будет поддерживать Workbook2 активным - каждый раз).
Кроме выбора функции «Переключить Windows», единственный способ выбрать второй диапазон из Workbook2 - это нажать кнопку «Отмена» и отпустить кнопку мыши в другом месте, т. Е. Фактически не нажать кнопку «Отмена».
Появится Workbook2, однако вы еще не можете выбрать диапазон; диапазон можно выбрать только после нажатия в диалоговом окне (из того, что я обнаружил).
Кроме того, я только что заметил, что если вы инициализируете пользовательскую форму с активным Workbook2, то при нажатии кнопки Workbook1 активируется вместо этого.
Private Sub CommandButton1_Click()
Dim rng As Range
Me.Hide
' Windows(2).Activate ' edited for correctness
Workbooks("Book2").Activate
On Error Resume Next
Set rng = Application.InputBox("Select range", "Select Range", Type:=8)
On Error GoTo 0
Me.Show
End Sub
Может ли это быть связано с переходом Microsoft с MDI на SDI для Excel 2013 и выше?
Более важно, как мне обойти эту проблему?