函数返回后自动调整单元格大小

函数返回后自动调整单元格大小

我有一个带有一堆函数的 xla。基本上,这些函数中的每一个都在另一个工作表上执行垂直查找。以下是其中一个的基本示例:

Function ax2Project_Address(projectnumber)
If (projectnumber = "?") Then
    ax2Project_Address = "Unknown address"
Else
    ax2Project_Address = Application.VLookup(projectnumber, Sheets("AX Data").Range("A:K"), 11, False)
End Function

这样,用户只需使用工作表上的项目编号调用该函数,它就会向他们提供地址,而无需自己编写垂直查找。
我现在想做的是让当前单元格的行自动调整其高度以适应其内容。问题是,这显然应该在单元格填满地址后完成,但由于函数在返回后结束,因此不会执行自动调整命令。

有没有办法在返回后在函数中执行 autofit 命令?
或者我可以使用完全不同的方法吗?

答案1

函数无法改变 Excel 中的任何东西,除了调用它的单元格。话虽如此,我很确定函数可以触发例程 -

Option Explicit

Public Function eieio(numb As Long) As Long
    eieio = Int(numb / 2)
    Test
End Function


Sub Test()
MsgBox ("hi")
End Sub

eieio(12) = 6 和 msgbox "hi"

话虽如此,你不能做的是这样的 -

Option Explicit

Public Function eieio(numb As Long) As Long
    eieio = Int(numb / 2)
    Test
End Function


Sub Test()
Dim str As String
str = Application.Caller.Address
Dim rng As Range
Set rng = Range(str)
MsgBox (rng.Address)
rng.EntireRow.AutoFit
End Sub

因此,据我所知,例程无法更改 application.caller。一直都是这样。

答案2

如果您不想自动调整整个工作表,请在工作表代码模块中使用它:

Private Sub Worksheet_Calculate()
    Dim a As Range
    For Each a In Me.UsedRange
        If a.Formula Like "=ax2Project_Address(*" Then a.EntireRow.AutoFit
    Next a

End Sub

相关内容