VBA值错误

VBA值错误,vba,excel,Vba,Excel,我对VBA相当陌生。基本上,我的代码尝试根据区域列中的最大值输出分类,区域列有几个类别。逻辑似乎是正确的,但我一直在得到一个#值!错误。任何帮助都将不胜感激 Public Function luclass(NAPS As Double) As String Dim lastrow As Long Dim c As Range, rng As Range Dim maxclass As String Dim maxshape As Double With ThisWorkbook.Wor

我对VBA相当陌生。基本上,我的代码尝试根据区域列中的最大值输出分类,区域列有几个类别。逻辑似乎是正确的,但我一直在得到一个#值!错误。任何帮助都将不胜感激

Public Function luclass(NAPS As Double) As String
Dim lastrow As Long
Dim c As Range, rng As Range
Dim maxclass As String
Dim maxshape As Double
     With ThisWorkbook.Worksheets("LandUseClass2")
     lastrow = .Cells(.Rows.Count, "B").End(xlUp).Row
     maxclass = "Blank"
     maxshape = 0
     For Each c In .Range("B2:B650" & lastrow)
          If c.Value = NAPS Then
               If .Range("F" & c.Row).Value > maxshape Then
                   .Range("C" & c.Row).Text = maxclass
               End If
          End If
     Next c
     End With
     luclass = maxclass
End Function
  • .Range(“B2:B650”和lastrow)
    更改为
    .Range(“B2:B”和lastrow)
  • .Range(“C”&C.Row).Text=maxclass
    更改为
    .Range(“C”&C.Row).Value=maxclass
    。Text
    为只读属性
  • 由于试图写入函数中的某个范围,因此出现了
    #值
    错误

    使用
    Sub
    而不是
    函数
    ,或者解释您要实现的具体目标,我们将从那里开始:)


    这个函数是如何调用的?如果它是由单元格公式调用的用户定义函数(UDF),则不能这样做。函数接受输入、计算内容并生成输出-没有副作用:函数不能修改其他单元格。谢谢,但现在它说的是初始的“Public Sub luclass(NAPS As Double)As String”-As String部分是语句的预期结尾?哦,我想subs通常不接受输入?@Melanie subs可以接受输入,但是只要去掉最后的
    作为字符串
    ,签名就简单了:
    公共子类(NAPS作为Double)
    Public Sub luclass(NAPS As Double)