2

我最近才开始在 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 或更低的相邻单元格表示丢失(如果这有任何意义),则没有真正的意义,因为我目前正在学习基础知识:)

现在我的问题......基本上当我尝试调试它时,我得到类型不匹配错误,我真的不明白为什么会这样。我知道当我将范围设置为一个单元格而不是多个单元格时它会起作用,所以我最好的猜测是它与此有关。我已经调查过了,但我再次得到的结果只能证明这应该有效。我一定在某处误读了它,但我们将不胜感激。:)

4

1 回答 1

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")
于 2012-08-31T08:16:22.983 回答