2015-05-05 2 views
1

Я пытаюсь написать функцию VBA, которая вызывается из ячейки. В этой функции мне нужно использовать свойство CurrentRegion, но он возвращает неожиданный результат.Неверный результат из CurrentRegion при использовании в функции, вызванной из ячейки

Функция:

Function GetVarRange() As String 

    Dim rngRangeToLeft As Range, wks As Worksheet 
    Set wks = Application.Caller.Worksheet 
    Set rngRangeToLeft = wks.Range("A1").CurrentRegion 

    GetVarRange = rngRangeToLeft.Address 

End Function 

В результате я получаю в ячейке $ A $ 1.

В A1 есть значения, а вокруг него CurrentRegion - это фактически A1: AD618, и это результат, который я получаю, когда получаю доступ к свойству в редакторе кода (не в этой функции) и когда я нажимаю ctrl + A, когда выбран A1.

Любые идеи кто-нибудь?

ответ

1

CurrentRegion правильно не работает в UDF() 's вызывается из ячеек рабочего листа. Я также нашел проблемы с FindNext и SpecialCells.

Вызывается из Sub, это другая история:

Function GetVarRange(rng) As String 
    Dim rngRangeToLeft As Range, wks As Worksheet 
    Set rngRangeToLeft = rng.CurrentRegion 
    GetVarRange = rngRangeToLeft.Address 
End Function 

Sub MAIN() 
MsgBox GetVarRange(Range("A1")) 
End Sub 

, кажется, работает нормально.

Смежные вопросы