У меня есть две пользовательские функции Excel, которые работают независимо, но когда я объединил их с необязательным аргументом, часть его больше не работает.
Функции, которые я тестирую, следующие:
Их код следующий:
Function PageWidth1()
Dim r As Range
Application.Volatile
Set r = Application.Caller.Parent.Range(Application.Caller.Parent.PageSetup.PrintArea)
Debug.Print r.Width
PageWidth1 = r.Width
End Function
И
Function PageWidth2(MyArea As Range)
Dim r As Range
Application.Volatile
Set r = Range(MyArea.Address)
Debug.Print r.Width
PageWidth2 = r.Width
End Function
И
Function PageWidth3(Optional MyArea As Range)
Dim r As Range
Application.Volatile
If Not (IsMissing(MyArea)) Then
Set r = Range(MyArea.Address)
Debug.Print r.Width
PageWidth3 = r.Width
Else
Set r = Application.Caller.Parent.Range(Application.Caller.Parent.PageSetup.PrintArea)
Debug.Print r.Width
PageWidth3 = r.Width
End If
End Function
= PageWidth1 (), PageWidth2 (MyRange) и PageWidth3 (MyRange) все дают действительные результаты.
= PageWidth3 () выдает и ошибка.
Куда я иду не так?