44.4は38以上である、そしてそれのためのチェックが38であるの任意の値以上の意味に関係なく、他の条件の結果の実行されています緑色になる。
条件を具体的に指定する必要があります。具体的には、「XとYの間」の部分です。これはSelect Case
ブロックのための仕事のように見えます - 例えば、これはコード「38と44.4の間で緑」のようになります。
Select Case ActiveSheet.Cells("C16").Value
Case 38 To 44.4
Target.Interior.Color = vbGreen
Case Else
Target.Interior.Color = vbRed
End Select
コード「33と39.4の間に緑が」次のようになります。
Select Case ActiveSheet.Cells("C16").Value
Case 33 To 39.4
Target.Interior.Color = vbGreen
Case Else
Target.Interior.Color = vbRed
End Select
を
パターンに注意してください。それをパラメータ化し、独自の手順でそれを置く:
Public Sub ConditionalHighlight(ByVal checkCell As Range, ByVal target As Range, ByVal lowerLimit As Double, ByVal upperLimit As Double)
'ensure the value is a Double (and not an error or a string):
If VarType(checkCell.Value) <> vbDouble Then Exit Sub
'work with an actual Double instead of the Variant we get off the cell:
Dim checkValue As Double
checkValue = CDbl(checkCell.Value)
Select Case checkValue
Case lowerLimit To upperLimit
target.Interior.Color = vbGreen
Case Else
target.Interior.Color = vbRed
End Select
End Sub
今ちょうどあなたのボタンのClick
ハンドラからそれを呼び出す:
Private Sub Button1_Click()
ConditionalHighlight Range("C16"), Range("whatever"), 38, 44.4
End Sub
Private Sub Button2_Click()
ConditionalHighlight Range("C16"), Range("whatever"), 33, 39.4
End Sub
Private Sub Button3_Click()
ConditionalHighlight Range("C16"), Range("whatever"), 42, 74.4
End Sub
*のSelectionChange *、それは*プロパティ*ですされていない 'Worksheet' **イベント**。 'Worksheet_SelectionChange' *は、イベントが発生/起動されたときにそのイベントを処理します。*イベントハンドラ*プロシージャです。サイドノート、イベントハンドラは 'Private'、暗黙的に' Public'です。 –
@ Mat'sMug - Worksheet_SelectionChangeがパブリックモジュールコードシートではなくプライベートワークシートコードシートにあり、それがトリガーされる唯一の場所である場合、それは暗黙的にプライベートです。 – Jeeped
@Jeeped [まあ、オブジェクトブラウザには見えません](https://i.stack.imgur.com/CrlPy.png)。 –