В настоящее время я работаю над миграцией с Office 2002 с пакетом обновления 3 (SP3) на Office 2010.
В книге Excel с интенсивным использованием VBA я сталкиваюсь со следующей проблемой:
Следующая функцияработает как шарм в 2002 году, но вылетает при открытии с 2010 года.
Private Function fktSeeall()
Dim pPage As Page, cCont As Control, mpMultiPage As Control
If Seeall Then
cbButton2.Caption = "Leere ausblenden"
Else
cbButton2.Caption = "Alle anzeigen"
End If
For Each mpMultiPage In Me.Controls
If TypeName(mpMultiPage) = "MultiPage" Then
For Each pPage In mpMultiPage.Pages
pPage.Visible = Seeall
For Each cCont In pPage.Controls
If TypeName(cCont) = "TextBox" And cCont.Text <> "" Then
pPage.Visible = True
mpMultiPage.Value = Right(pPage.Name, 1) - 1
End If
Next cCont
Next pPage
End If
Next
End Function
Логическое значение Seeall
установлено вне функции.Все страницы содержат одно текстовое поле.Если для seeall установлено значение false, каждая страница, за исключением страниц с заполненными текстовыми полями, скрыта.Если установлено значение true, все страницы отображаются снова.
Сбой Office 2010 в строке For Each pPage In mpMultiPage.Pages
с кодом сообщения об ошибке 13 «Несоответствие типов»
Сбой также происходит, если я использую
For Each pPage In MultiPage1.Pages
pPage.Visible = Seeall
For Each cCont In pPage.Controls
If TypeName(cCont) = "TextBox" And cCont.Text <> "" Then
pPage.Visible = True
MultiPage1.Value = Right(pPage.Name, 1) - 1
End If
Next cCont
Next pPage
Я не понимаю, почему новая версия Office не работает на данном этапе моего кода.
Это скриншот пользовательской формы: ![enter image description here](https://i.stack.imgur.com/JeKhR.png)