K
ker_01
I'm trying to create a function (UDF) that will allow input two ranges; one
is required, the other is optional. See sample code below.
If the required range isn't included, the function returns an error, which
is fine. However, when only the optional range is omitted, my code blows up
(without an error) when I try to process the returned value. I've done some
searching, but haven't found a way to easily/cleanly determine if the
variable returned by the function is a valid range (so that I can
conditionally process those values).
Can anyone point me in the right direction?
Many thanks!
Keith
much-simplified sample below (with two problems); one is that when there is
no MyOptionalRange entered, the code never reaches the msgbox (I'd at least
have expected an error). The other problem is that when MyOptionalRange /is/
included and the values are being entered via the formula entry pop-up (and
not entered by hand directly in the cell), the code seems to loop more than
once (msgbox keeps popping up) and I'm not sure why or how to ensure that it
only processes once, when the formula box is closed.
Function ThisIsATest(MyRequiredRange As Range, MyOptionalRange As Range)
Dim MyRequiredVariantArray As Variant
MyRequiredVariantArray = MyRequiredRange.Value
Debug.Print MyRequiredVariantArray(1, 1)
Dim MyOptionalVariantArray As Variant
MyOptionalVariantArray = MyOptionalRange.Value
Debug.Print MyOptionalVariantArray(1, 1)
MsgBox "All Done"
End Function
is required, the other is optional. See sample code below.
If the required range isn't included, the function returns an error, which
is fine. However, when only the optional range is omitted, my code blows up
(without an error) when I try to process the returned value. I've done some
searching, but haven't found a way to easily/cleanly determine if the
variable returned by the function is a valid range (so that I can
conditionally process those values).
Can anyone point me in the right direction?
Many thanks!
Keith
much-simplified sample below (with two problems); one is that when there is
no MyOptionalRange entered, the code never reaches the msgbox (I'd at least
have expected an error). The other problem is that when MyOptionalRange /is/
included and the values are being entered via the formula entry pop-up (and
not entered by hand directly in the cell), the code seems to loop more than
once (msgbox keeps popping up) and I'm not sure why or how to ensure that it
only processes once, when the formula box is closed.
Function ThisIsATest(MyRequiredRange As Range, MyOptionalRange As Range)
Dim MyRequiredVariantArray As Variant
MyRequiredVariantArray = MyRequiredRange.Value
Debug.Print MyRequiredVariantArray(1, 1)
Dim MyOptionalVariantArray As Variant
MyOptionalVariantArray = MyOptionalRange.Value
Debug.Print MyOptionalVariantArray(1, 1)
MsgBox "All Done"
End Function