【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】

できますか? できれば詳しく教えてください。お願いいたします。

「Excel VBAでフォントの色が違うと」の質問画像

質問者からの補足コメント

  • どう思う?

    詳しく言えば、 A1かC1かD1が赤ければ F1がNGとなるようなマクロを希望しています。
    よろしくお願いいたします。

      補足日時:2017/03/10 05:30
  • どう思う?

    Sub OKNG_chk()
    Sheets("Sheet1").Select
    Dim j As String
    ’Dim j As Double

    For j = 1 To Cells(Column.Count, "D").End(xlUp).Row
    If Cells(j).Font.ColorIndex = 3 Then
    Range("E - 1") = "NG"
    Else
    Range("E - 2") = "OK"
    End If
    Next j
    End Sub

    さすがに上記はNGでした。

      補足日時:2017/03/10 06:48
  • どう思う?

    Sub OKNG_chk()
    Sheets("Sheet1").Select

    Dim i As Double, j As Double
    For j = 0 To 3
    For i = 5To 5
    If Cells(j).Font.ColorIndex = 3 Then
    Cells(i) = "NG"
    End If
    Next i
    Next j

    End Sub
    上記でコンパイルは通ったんですがねw さすがにまた上記はNGでした。

      補足日時:2017/03/10 07:22

A 回答 (3件)

こんばんは。



A1かC1かD1なら、1 から 3となりませんが、必要に応じて修正してください。
この場合、ループのネストはややこしくなってしまいます。

'//
Sub OK_NG_Checking()
 Dim j As Long
 'A1かC1かD1が赤ければ F1
 With Worksheets("Sheet1")
  For j = 2 To .Cells(Rows.Count, 4).End(xlUp).Row
   If .Cells(j, 1).Font.ColorIndex = 3 Or _
    .Cells(j, 3).Font.ColorIndex = 3 Or _
    .Cells(j, 4).Font.ColorIndex = 3 Then
    .Cells(j, 6).Value = "NG"
    Else
    .Cells(j, 6).Value = "OK"
   End If
  Next j
 End With
End Sub
    • good
    • 0

殆どできてますよ。


ちょっと修正すると
ーーーーーーーーーーーーーーーーーーー
Sub OKNG_chk()
’Sheets("Sheet1").Select←これいらない 
Sheets("Sheet1").Activate’←必要であればですけど、たぶんいらない!

Dim i As Double, j As Double
For j = 1 To 3’←セル指定に「0」はありません 列A~Cなら1~3
For i = 1To 5’←セル指定に行1~5 
’For i = 1 To Cells(Column.Count, "D").End(xlUp).Row ’※D列の最終行までならこちらの方
If Cells(i,j).Font.ColorIndex = 3 Then ’セルの指定は、cells(行番号,列番号)
Cells(i,6) = "NG" ’6列目(=F列)にNGを表示
End If
Next i
Next j
End Sub
ーーーーーーーーーーーーーーーーーーーー
たぶんこれでNGの表示まではできるはずです。
OK を表示させるためにはもう一工夫必要です。

ーーーーーーーーーーーーーーーーーーー
Sub OKNG_chk()
Sheets("Sheet1").Activate’←必要であれば


Dim i As Double, j As Double
Dim CHK As Boolean '
For i = 1 To Cells(Column.Count, "D").End(xlUp).Row 
CHK=true ’ 行番号が変われば初期化
For j = 1 To 3’列側の走査が内側
If Cells(i,j).Font.ColorIndex = 3 Then
CHK=false '1つでもあればNGを表示するために記録
End If
Next j

If CHK Then '1つもなければ
Cells(i,6) = "OK" 
Else
Cells(i,6) = "NG" 
End if

Next i
End Sub
ーーーーーーーーーーーーーーーーーーーー
これでいけませんか?確認してみてください。
    • good
    • 0

このコミュは半角字下げができないので、全角ブランクで字下げしています。


コピペしたら、半角に修正して下さい。


Sub WK()
Dim CNT As Long
Dim END1 As Long
Dim Sh As Worksheet

Set Sh = ActiveSheet
END1 = Sh.Range("A65536").End(xlUp).Row

For CNT = 2 To END1
 If Sh.Range("A" & CNT).Font.ColorIndex = 3 Or Sh.Range("C" & CNT).Font.ColorIndex = 3 Or Sh.Range("D" & CNT).Font.ColorIndex = 3 Then
  Sh.Range("F" & CNT).Value = "OK"
 Else
  Sh.Range("F" & CNT).Value = "NG"
 End If
Next CNT

Application.StatusBar = False
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!