|
▼美紀子 さん:
おはようございます。
>点数の結果条件として素人ながら
>
>Sub 判定1()
>
> Dim gyou As Integer
>
> For gyou = 6 To 6
'このForステートメント要りませんよね?
'何か理由があってのことですか?
> If Cells(gyou, "c") >= 85 Then
' Cells(gyou, "c").value とプロパティまで記述する癖を
' 付けてください。その方が思わぬバグに遭遇することが少ないですよ!!
> With Range("d11").Interior
> .ColorIndex = 33
> .Pattern = xlSolid
> End With
> End If
> Next gyou
>End Sub
一つのコードで全て判断するには
Sub 判定()
Dim wk As Double
Dim Result As Boolean
Result = True
' ↑True 3つの条件の全てが成立
' False 3つの条件の少なくとも一つが不成立
With Range("d11:f11").Interior
.ColorIndex = xlNone
End With
'一度、塗りつぶしをクリア
If Cells(6, "c").Value >= 85 Then
With Range("d11").Interior
.ColorIndex = 33
.Pattern = xlSolid
End With
Else
Result = False
End If
wk = Range("c6").Value - Range("d6").Value
If wk >= 11 Then
With Range("e11").Interior
.ColorIndex = 33
.Pattern = xlSolid
End With
Else
Result = False
End If
wk = Range("d6").Value - Range("e6").Value
If wk >= 6 And wk <= 10 Then
With Range("f11").Interior
.ColorIndex = 33
.Pattern = xlSolid
End With
Else
Result = False
End If
If Result = False Then
With Range("d11").Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
End If
End Sub
なんてコードで可能です。
コードを短くするなら、
Sub 判定0()
Dim g0 As Long
Dim Result As Boolean
Dim chk As Variant
With Range("d11:f11").Interior
.ColorIndex = xlNone
End With
chk = Array("c6>=85", "c6-d6>11", "AND(d6-e6>=6,d6-e6<=10)")
Result = True
For g0 = LBound(chk) To UBound(chk)
If Evaluate(chk(g0)) Then
With Range("d11").Offset(0, g0).Interior
.ColorIndex = 33
.Pattern = xlSolid
End With
Else
Result = False
End If
Next
If Result = False Then
With Range("d11").Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
End If
End Sub
なんてコードでも可能です。
コードが短いから良いという事ではありませんよ!!
ケースバイケースです。
試してみてください。
|
|