• 締切済み

Excel2007です。マクロについて教えてください。

エクセル2007です。マクロについて教えてください。 エクセルで英語の単語問題を作りたいのですが・・・ 例えばセルA列とB列(A列30問B列30問で全60問)に単語問題が記入されています。C列とD列が答えを記入する欄です。答えを記入し終えたら、「答え合わせボタン」を押して間違えた解答の文字だけが赤くなる。このような物を作成するにはどのようにすればいいでしょうか?? どなたか回答よろしくお願い致します。

みんなの回答

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

解答欄がSheet1の"C1:D30" 正解欄がSheet2の"C1:D30" 上記の場合の一例です。 Sub 採点() Dim kaito As Range, seikai As Range Dim i As Integer Set kaito = Sheets("Sheet1").Range("C1:D30") Set seikai = Sheets("Sheet2").Range("C1:D30") For i = 1 To kaito.Cells.Count If kaito(i).Value <> seikai(i).Value Then kaito(i).Font.ColorIndex = 3 End If Next i End Sub Sub クリア() With Sheets("Sheet1").Range("C1:D30") .Font.ColorIndex = 0 .ClearContents End With End Sub

mild666666
質問者

お礼

素晴らしいほどに完璧でした。どうもあありがとうございました。

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.3

あ~ごめんなさい。マクロはこっちが正しいです。テストしたときの 範囲を直しそびれてました・・・。 Sub S_SAITEN() Range("C1").Select With Selection .FormatConditions.Add Type:=xlExpression, Formula1:="=G1=1" .FormatConditions(1).Font.ColorIndex = 2 .FormatConditions(1).Interior.ColorIndex = 3 .Copy End With Range("C1:D30").Select Selection.PasteSpecial Paste:=xlPasteFormats Application.CutCopyMode = False Range("C1").Select End Sub Sub S_CLEAR() Range("C1:D30").Select Application.CutCopyMode = False Selection.FormatConditions.Delete Range("C1").Select End Sub

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.2

基本的に「別の場所に正否を判断するセルを作っておき、そこを参照 してセルの書式を変換する」という方法を取る必要があると思います。 ただ、忘れてはいけないのは「採点後リセットを掛けないと、そのセル の書式は"正誤表示"のまま残る」ということです。ボタンは「採点」と 「クリア」の2つが必要です。 まずは、E,F列に各々、C,D列の正解を書いたセルを作ってください。 その上でG,H列に、以下のように式を設定すれば正誤が判定できます。 =IF(C1=E1,1,0) 上記の表が出来た前提で「採点」用のマクロです。 Sub S_SAITEN() Range("A1").Select With Selection .FormatConditions.Add Type:=xlExpression, Formula1:="=G1=1" .FormatConditions(1).Font.ColorIndex = 2 .FormatConditions(1).Interior.ColorIndex = 3 .Copy End With Range("A1:B30").Select Selection.PasteSpecial Paste:=xlPasteFormats Application.CutCopyMode = False Range("C1").Select End Sub 次に「クリア」ボタン用マクロです。 Sub S_CLEAR() Range("A1:B30").Select Application.CutCopyMode = False Selection.FormatConditions.Delete Range("C1").Select End Sub コレで出来ると思います。 なお、「赤」の部分は「.Font.ColorIndex」と「.Interior.ColorIndex」の 数値をいじると変わりますので、色々試してみてください。 注)テストはExcel2002で行ってますが、多分このままExcel2007でも  動作すると思います。動かなければ・・・すいません。

  • WDY
  • ベストアンサー率27% (134/487)
回答No.1

ループをして回答と解答を比較して違っていたら赤くしてはどうでしょう?

関連するQ&A