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