Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA:在工作表中自定义项的地址上应用MAX_Excel_Vba - Fatal编程技术网

Excel VBA:在工作表中自定义项的地址上应用MAX

Excel VBA:在工作表中自定义项的地址上应用MAX,excel,vba,Excel,Vba,我已经编写了一个UDF,它从工作表中返回范围(没有标题的列)的地址。输出是一个类似“$a$2$a$5”的字符串。在另一个工作表中,我想在单元格A2到A5的相应范围内应用几个工作表函数,例如MAX。 当用相应的字符串值替换UDF时,MAX和UDF的组合会导致错误消息(#Value):MAX($A$2$A$5)起作用。 有没有办法让这一切顺利进行?代码: Public Function SELECTH(SheetName As String, HeaderName As String) As Str

我已经编写了一个UDF,它从工作表中返回范围(没有标题的列)的地址。输出是一个类似“$a$2$a$5”的字符串。在另一个工作表中,我想在单元格A2到A5的相应范围内应用几个工作表函数,例如MAX。 当用相应的字符串值替换UDF时,MAX和UDF的组合会导致错误消息(#Value):MAX($A$2$A$5)起作用。 有没有办法让这一切顺利进行?代码:

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

返回范围而不是字符串:

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

返回范围而不是字符串:

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