考虑这样的UDF(缩写):
Public Function ffifneps(wo As Range, pre As Variant, suf As Variant) As String
Dim z As Range, e As String
...
For Each z In wo
If CStr(z.Value) <> "" Then
If (Len(e) > 0) Then e = e & ", "
e = e & maske & z.Value & maske
End If
Next z
...
使用Sheet1中的这个UDF,其中 wo 是Sheet1上的多区域范围,例如
=ffifneps((B37:B38;B137:B138);C37:C38;". ")
在插入或删除另一个工作表时重新计算UDF,然后将相对范围应用到工作表然后可见,从而产生意外结果。
如果我通过像
那样的单区域范围=ffifneps(B37:B38;C37:C38;". ")
一切都很好。
同样的事情,BTW,如果看看区域,例如。
...
For Each z In pre.Areas
e = e & "'" & z.Parent.Name & "'!" & z.Address
i = i + 1
If (pre.Areas.Count > 1) And (i < pre.Areas.Count) Then e = e & ", "
Next z
...
我做错了什么? 谢谢你的帮助!
编辑:暂时,我修补了这样:
...
If (TypeName(Application.Caller) = "Range") Then
If (wo.Areas.Count > 1) Then Set wo = Application.Caller.Parent.Range(wo.Address)
If (TypeName(pre) = "Range") Then If (pre.Areas.Count > 1) Then Set pre = Application.Caller.Parent.Range(pre.Address)
If (TypeName(suf) = "Range") Then If (suf.Areas.Count > 1) Then Set suf = Application.Caller.Parent.Range(pre.Address)
End If
丑陋,我知道,如果它们是多区域的,那么UDF就不能再用于真正的跨工作表范围了。 但我一直在想? ...