Excel中的VBA错误:无效使用属性

0 excel vba excel-vba

我已经写了下面的代码CommandButton_Click(),但它给出了以下错误:

编译错误:无效使用属性.

Public Sub SectorNAme()
  Dim score As String, result As Integer
  Dim a_counter As Integer

  For a_counter = 1 To 473
    score = Range("AB" + a_counter).Value

    If score = "Technology & FM" Then
      result = "25"
    ElseIf score = "Operating Equipment & Supplies" Then
      result = "26"
    ElseIf score = "Interiors & Design" Then
      result = "27"
    ElseIf score = "Outdoor & Resort Experience" Then
      result = "28"
    ElseIf score = "HORECA" Then
      result = "29"
    ElseIf score = "Retail & Franchise" Then
      result = "30"
    ElseIf score = "Design" Then
      result = "33"
    ElseIf score = "Health & Fitness Eqpts, P&S" Then
      result = "32"
    ElseIf score = "Recreational Fun & Adventure" Then
      result = "31"
    Else
      result = "35"

    Range("AC" + a_counter).Value

    End If
  Next a_counter
End Sub
Run Code Online (Sandbox Code Playgroud)

请帮我找一个解决方案.

dji*_*kay 6

你有一些小问题:

  1. 你得到的错误是:

    Range("AC" + a_counter).Value
    
    Run Code Online (Sandbox Code Playgroud)

    我假设你打算这样做:

    Range("AC" + a_counter).Value = result
    
    Run Code Online (Sandbox Code Playgroud)
  2. 这个:Range("AB" + a_counter)而且:Range("AC" + a_counter)应该使用&而不是+连接字符串,否则会出现类型不匹配,即:Range("AB" & a_counter)Range("AC" & a_counter).

  3. 我刚刚编辑你的问题,并提供更好的压痕,我还注意到,您End If Range("AC" + a_counter).Value,这是不对的.应该在此之前,否则您的结果将仅在Else案例中分配,而不是针对任何其他人.

所以,你的最终代码应如下所示:

Public Sub SectorName()

  Dim score As String, result As Integer
  Dim a_counter As Integer

  For a_counter = 1 To 473
    score = Range("AB" & a_counter).Value

    If score = "Technology & FM" Then
      result = "25"
    ElseIf score = "Operating Equipment & Supplies" Then
      result = "26"
    ElseIf score = "Interiors & Design" Then
      result = "27"
    ElseIf score = "Outdoor & Resort Experience" Then
      result = "28"
    ElseIf score = "HORECA" Then
      result = "29"
    ElseIf score = "Retail & Franchise" Then
      result = "30"
    ElseIf score = "Design" Then
      result = "33"
    ElseIf score = "Health & Fitness Eqpts, P&S" Then
      result = "32"
    ElseIf score = "Recreational Fun & Adventure" Then
      result = "31"
    Else
      result = "35"
    End If

    Range("AC" & a_counter).Value = result
  Next a_counter

End Sub
Run Code Online (Sandbox Code Playgroud)

现在应该按照您的预期工作.