У меня есть функция, которая обновляет форму «LoadingInterface».Функция выглядит следующим образом:
Private Sub updateLoadingBar(Optional tekst As String, Optional barOnePerc As Long, Optional barTwoPerc As Long)
If Not IsMissing(tekst) Then
LoadingInterface.Label1.Caption = tekst
End If
If Not IsMissing(barOnePerc) Then
LoadingInterface.Bar.Width = barOnePerc * 1.68
LoadingInterface.prosent.Caption = barOnePerc & "%"
LoadingInterface.prosent.Left = barOnePerc * 1.68 / 2 - 6
End If
If Not IsMissing(barTwoPerc) Then
LoadingInterface.SubBar.Width = barTwoPerc * 1.68
End If
LoadingInterface.Repaint
End Sub
Затем я вызываю функцию следующим образом, ожидая, что она обновит только текстовое поле, поскольку отсутствуют два других аргумента.
Call updateLoadingBar(tekst:="Test")
Это работаетотлично подходит для обновления Label1
, но, к сожалению, два других значения тоже обновляются - кажется, что отсутствие каких-либо значений в вызове функции заставляет VBA предполагать, что значения двух переменных равны 0. Более того, кажется, что функция IsMissing необнаружить, что два значения отсутствуют при вызове функции, что является большей проблемой.Выполнение кода с использованием F8 подтверждает, что все операторы if действительно введены.
Есть ли способ заставить код пропустить два самых нижних оператора if в моей функции, если для параметров не заданы значенияbarOnePerc
и barTwoPerc
?