0

我正在伊利诺伊大学厄巴纳-香槟分校的校园内开展一个关于住房的项目。

我想根据两个条件来计算:如果房子是兄弟会(编码为“1”),如果它在 Champaign(如果地址 *61820)。

这是我的宏:

Sub ChampFrat()

  Dim Champaign As Integer
  Champaign = 0

  If Range("$B2:$B79").Value = "1" And Range("$C2:$C79").Value = "*61820" Then
    Range("$B$82").Value = (Champaign = Champaign + 1)
  Else
    Range("$B$82").Value = (Champaign = Champaign + 0)
  End If
End Sub

我收到“类型不匹配”错误。

我将需要创建五个其他类似的宏;一个计数厄巴纳 (*61801) 的兄弟会 (“1”),一个计数香槟 (地址 *61820) 的姐妹会 (“0”),一个计数厄巴纳 (*61801) 的姐妹会 (“0”),一个计数用于计算 Champaign (*61820) 中的男女同校 (“2”) 和一个用于计算厄巴纳 (*61801) 中的男女同校 (“2”)。

我在一堂课上学习了 VBA 和 MySQL,从那以后就没怎么用过,但我想为这样的项目更好地学习它。我为赞成或回答其他问题而道歉;我已经很久没有使用 StackOverflow 了。我真诚地感谢任何帮助。

4

1 回答 1

0

您不能在 VB 中像您在此处尝试的等式右侧分配值:

Range("$B$82").Value = (Champaign = Champaign + 1)

将其更改为:

Range("$B$82").Value = Champaign + 1

我假设您想一次检查每个值而不是整个值范围。您需要遍历范围并单独测试每个范围。

Sub ChampFrat()

  Dim Champaign As Integer
  Champaign = 0

  Dim rRng As Range
  Set rRng = Range("$B2:$B79")

  For Each cell In rRng.Cells
    If cell.Value = "1" And cell.offset(0,1).Value Like "*61820" Then
      Champaign = Champaign + 1
      Range("$B$82").Value = Champaign
    Else
      Range("$B$82").Value = Champaign
    End If
  Next
End Sub
于 2013-10-24T15:47:45.427 回答