VBA我的if语句不起作用

时间:2012-08-31 08:13:12

标签: if-statement excel-vba type-mismatch vba excel

我最近刚刚开始在excel中学习VBA而且我已经在网上浏览了各种教程,但是在访问if语句时遇到了一些问题。根据我在网上获得的知识和我的VB知识,我想出了以下代码。

Private Sub CommandButton1_Click()
   Dim mynum As Integer, checker As String
   mynum = Range("A1:A10").value

   If mynum > 0 Then
        checker = "check"
   Else
        checker = "missing"
   End If

   Range("B1:B10").value = checker
End Sub

这个想法是,如果列a中的数字大于0,则检查列b中的相邻单元格,如果它的0或更低,则相邻单元格表示缺失(如果这有任何意义),则没有真正的指向这是因为我正在学习基础知识:)

现在我的问题...基本上当我尝试调试这个时,我得到了Type Mismatch错误,我真的不明白为什么会这样。我知道当我将范围设置为一个单元格而不是多个单元格时它可以工作,所以我最好的猜测是它与它有关。我已经调查了它,但我再次得到的结果只是支持这应该工作。我一定在某个地方误读了它,但是会有所帮助。 :)

1 个答案:

答案 0 :(得分:7)

您无法分配/检查此类范围的值,以表示您要执行的操作。一种方法是循环你的范围。例如

Private Sub CommandButton1_Click()
    Dim Rng As Range, aCell As Range

    Set Rng = Range("A1:A10")

    For Each aCell In Rng
        If aCell.Value > 0 Then
            aCell.Offset(, 1).Value = "check"
        Else
            aCell.Offset(, 1).Value = "missing"
        End If
    Next
End Sub

修改

顺便说一句,你不需要VBA。如果您打开非VBA解决方案,那么只需将此公式放在单元格B1中并将其复制下来

=IF(A1>1,"Check","Missing")