Saya telah menulis UDF yang mengembalikan alamat rentang (kolom tanpa header) dari lembar kerja. Outputnya adalah string seperti "$A$2$A$5". Di lembar kerja lain, saya ingin menerapkan beberapa fungsi lembar kerja, misalnya, MAX, pada rentang sel A2 hingga A5 yang sesuai. Kombinasi MAX dan UDF menghasilkan pesan kesalahan (#Value) saat mengganti UDF dengan nilai string yang sesuai: MAX($A$2$A$5) berfungsi. Apakah ada cara untuk membuat ini bekerja? Kode:

Public Function SELECTH(SheetName As String, HeaderName As String) As String

   Dim ColIndex As Integer
   Dim MaxRowIndex As Integer

   ColIndex = ActiveWorkbook.Worksheets(SheetName).Rows(1).Find(HeaderName).Column
   MaxRowIndex = ActiveWorkbook.Worksheets(SheetName).Cells(1, 1).End(xlDown).Row

   SELECTH = ActiveWorkbook.Worksheets(SheetName).Range(Cells(2, ColIndex), Cells(MaxRowIndex, ColIndex)).Address()

End Function
0
varioltinger 2 Januari 2018, 20:06

1 menjawab

Jawaban Terbaik

Kembalikan rentang dan bukan string:

Public Function SELECTH(SheetName As String, HeaderName As String) As Range

Dim ColIndex As Long
Dim MaxRowIndex As Long
    With ActiveWorkbook.Worksheets(SheetName)
        ColIndex = .Rows(1).Find(HeaderName).Column
        MaxRowIndex = .Cells(1, 1).End(xlDown).Row

        Set SELECTH = .Range(.Cells(2, ColIndex), .Cells(MaxRowIndex, ColIndex))
    End With

End Function
2
Scott Craner 2 Januari 2018, 17:16