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 以下の場合、隣接するセルが欠落している場合 (それが意味をなす場合)、これには本当の意味はありません。現在基礎を学んでいます:)

今私の問題...基本的にこれをデバッグしようとすると、型の不一致エラーが発生し、なぜそうなのか本当にわかりません。範囲を複数のセルではなく1つのセルとして設定すると機能することがわかっているので、それと関係があると思います。私はそれを調べましたが、これが機能するはずであることを裏付けるだけの結果を得ています。どこかで読み間違えたに違いありませんが、助けていただければ幸いです。:)

4

1 に答える 1

7

このような範囲の値を、実行しようとしているものに割り当て/確認することはできません。1つの方法は、範囲をループすることです。例えば

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 に答える