在Win7上的VBA EXCEL 2010中调用一个Sub()的错误

我需要从WEXCEL 2010 VBAon win7中调用一个子版本。

find_max rng1:=rng // error !!! ByRef argu mismatch Sub find_max(ByRef rng1 As Range) Dim dblM As Double dblM = -9E+307 Dim maxCellAddress As String For Each Cell In rng If IsNumeric(c) Then If dblMax < CDbl(Cell.Value) And Cell.Value <> "" Then dblM = CDbl(Cell.Value) maxCellAddress = (Cell.Address) End If End If Next Cell End Sub 

任何帮助将不胜感激!

总结所有的评论试试这个:

 Option Explicit Sub test() Dim rng As Range Set rng = Range("A1:B10") Call find_max(rng) End Sub Sub find_max(rng1 As Range) Dim dblM As Double dblM = -9E+307 Dim maxCellAddress As String Dim cell As Range For Each cell In rng1 If IsNumeric(cell) Then If dblM < CDbl(cell.Value) And cell.Value <> "" Then dblM = CDbl(cell.Value) maxCellAddress = (cell.Address) End If End If Next cell MsgBox (maxCellAddress) End Sub 

如果你想返回最大的单元格值改变它像这样的function:

 Option Explicit Sub test() Dim rng As Range Set rng = Range("A1:B10") MsgBox (find_max(rng)) End Sub Function find_max(rng1 As Range) Dim dblM As Double dblM = -9E+307 Dim maxCellAddress As String Dim cell As Range For Each cell In rng1 If IsNumeric(cell) Then If dblM < CDbl(cell.Value) And cell.Value <> "" Then dblM = CDbl(cell.Value) maxCellAddress = (cell.Address) End If End If Next cell find_max = maxCellAddress End Function