함수 반환 후 셀 크기 자동 조정

함수 반환 후 셀 크기 자동 조정

다양한 기능을 갖춘 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

이를 통해 사용자는 수직 조회를 직접 작성할 필요 없이 워크시트의 프로젝트 번호로 함수를 호출하고 주소를 제공할 수 있습니다.
지금 내가 원하는 것은 현재 셀의 행을 내용에 맞게 높이를 자동으로 맞추는 것입니다. 문제는 이 작업이 당연히 셀에 주소가 채워진 후에 수행되어야 하지만 반환 후에 함수가 종료되므로 자동 맞춤 명령이 실행되지 않는다는 것입니다.

반환 후 함수에서 자동 맞춤 명령을 실행하는 방법이 있나요?
아니면 사용할 수 있는 완전히 다른 접근 방식이 있나요?

답변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"

그러고 보면 당신은 무엇을캔트do는 이런 것입니다 -

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

관련 정보