2016-10-18 8 views
-1

がこれですrange.valueの場合=何か - 。エクセルVBAその後、私が探しています何

セルの範囲内の値は、いくつかの値または同じ値に等しい場合、それは」負の他に「ポジティブ」を示す必要がありますしかし、私は構文以下のように書くとき、それは誤りスロー -

If range("F3:H5").value = "X" then 

Msgbox "Positive result" 

else 

Msgbox "Negative result" 

end if 
+0

「それはエラーをスローは」役に立たないです。 「型の不一致のエラーが発生します」では、より多くのものを扱うことができます。 – jsheeran

答えて

0

次のようなものが必要です:あなたはこの機能を使用することができます

Dim found As Boolean 
found = False 
For Each cell In Range("F3:h5").Cells 
    if cell.Value = "X" Then 
     found = True 
    end if 
Next 

If found = True Then 
    Msgbox "Positive result" 
else 
    Msgbox "Negative result" 
End if 
+0

ありがとう、しかし私はループで実行することはできません複数の範囲があります。私はそれを直接検証できる方法はありますか?ループなしで –

+1

私はそうは思わない。とにかくそれが述べられているように、これは質問に答えます。 For/Nextループは、この作業を行うための余分なコードです。 – Paul

0

Function EvalRange(inRng As Range, inVal As Variant) As Variant 

    Dim CntAll, CntMatch As Double 

    CntAll = Application.Count(inRng) 
    CntMatch = Application.CountIf(inRng, inVal) 

    If CntAll = CntMatch Then 
     EvalRange = "Positive Result" 
     Else: EvalRange = "Negative Result" 
    End If 

    End Function 
+0

注:ソリューションは説明のためのものなので、私はエラー/例外処理を追加していません。ユーザーがその目的のために必要な変更を行うと仮定します。 – ArindamD

+0

これは、アプリケーション関数を記述する正しい構文ではありません。すなわちApplication.count。 –

+0

これを試してみてください。私は意図的に "Worksheetfunction"の使用を避け、 "Application"を使用してこの機能を使用しました。一言で言えば、Application.CountのようなステートメントはWorksheetfunction.Countよりも安定しています – ArindamD

0
VBA.MsgBox VBA.IIf(Evaluate("=SUMPRODUCT(--(F3:H5 = ""X""))"), "Positive result", "Negative result") 

"" X "" 二重引用符により、二つの外側の引用符に

F3:H5 = "" X "は" ブール結果F3 = X、F4 = X等

のアレイであります

- 負の値はブール値0/1になります。もう1つの負の "戻る" 1/0

IIf、評価、SUMPRODUCT ...機能。申し訳ありません、GIYF。

+3

あなたのコードについて少し説明すればよいでしょう。 –

+0

ようこそStackOverflowへ。通常は、匿名コードの行を単にポストするのではなく、解決策を説明する方が良いでしょう。 [良い答えを書くにはどうすればいいですか]と[コードベースの回答を完全に説明する](https://meta.stackexchange.com)を読むことができます。/questions/114762/explain-entire-%E2%80%8C%E2%80%8Bcode-based-answers)。 –

0

それは目的を果たす必要があります。

Sub string_validation() 

    Dim cel As Range 

    For Each cel In Range("F3:H8") 
     If cel.Value = "hassle" Then 
      MsgBox "Positive result" 
     Else 
      MsgBox "Negative result" 
     End If 
    Next cel 

End Sub 
関連する問題