¿Cómo puedo llamar a una function dentro de otra function en VBA?

Tengo una function 1 que se ve así:

Function myFirstFunction(lngCol As Long) As String Dim vArr vArr = Split(Cells(1, lngCol).Address(True, False), "$") Col_Letter = vArr(0) End Function 

Necesito llamar a esta function en una function separada como esta:

 Function myOtherFunction(myVar as Variant) As Variant Dim Some_Column As Range Some_Column = Range("B4").Address If Range((myFirstFunction(Some_Column.Column) & 65536)).End(xlUp) <> Range(myFirstFunction(Some_Column.Column) & 1) Then ...some code End If 

Me está dando un error, lo asumiría porque no puedo usar la primera function en la segunda function. ¿Hay alguna manera de arreglar esto?

Tu function no remite nada.

Probablemente desee cambiar Col_Letter a myFirstFunction en la primera function.

También en la segunda function, cambie 65536 a rows.count.

Entonces, se producirá un error aquí:

 Some_Column = Range("B4").Address 

Cambiarlo a esto:

 Set Some_Column = Range("B4") 

Esto se debe a que se define como un range por lo que no se puede pasar la dirección (que es una cadena), se pasa el object (que se debe usar para establecer)

Debería estar todo bien después de eso.

 Function myFirstFunction(lngCol As Long) As String Dim vArr vArr = Split(Cells(1, lngCol).Address(True, False), "$") myFirstFunction = vArr(0) End Function Function myOtherFunction(myVar As Variant) As Variant Dim Some_Column As Range Set Some_Column = Range("B4") If Range((myFirstFunction(Some_Column.Column) & rows.count)).End(xlUp) <> Range(myFirstFunction(Some_Column.Column) & 1) Then '...some code End If End Function 

La parte problemática es Some_Column = Range("B4").Address

  1. Dim Some_Column As Range declara la variable como un tipo de reference, lo que significa que necesita establecer su reference a un object indicando Set Some_Column = ... y preferiblemente Set Some_Column = Nothing al final con Set Some_Column = Nothing .
  2. .Address devuelve una String y no un object, por lo que su código debe Set Some_Column = Range("B4") para establecer Some_Column como un range.

Hay un error adicional en la primera function donde Col_Letter = vArr(0) probablemente debería ser myFirstFunction = vArr(0) , o al revés. Esta línea establece el valor devuelto de la function_name = ... , function_name = ...

Copió la solución de esta pregunta, pero si cambia el nombre de la function, debe cambiarla por completo.