函數返回後自動調整儲存格大小

函數返回後自動調整儲存格大小

我有一個帶有許多功能的 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 命令。

有沒有辦法在返回後在函數中執行 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“嗨”

話雖這麼說,你什麼不能做的是這樣的事情 -

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

相關內容