![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
EXCEL2000のVBAでの判定の仕方を教えてください。
あるセルに答えを入力します。答えが合っていれば”正解”、合っていなければ”間違っています”というようにしたいのです。
例えばC1のセルに「abc」を入力したらD1のセルに
”正解”と表示し、「abc」以外の入力の時には”間違っています”と表示させます。
答えは英文字の他に数字「123」・文字「マクロ」等を考えています。不正解についても幾通りか表示させたいのですがやり方が解りません。
「例えば半角で入力してください」と表示する。
参考になる事、解るとこだけでもかまわないです。
宜しくお願いします。
No.1ベストアンサー
- 回答日時:
以下は、セル内の記述を書きます。
参考程度にお聞き入れ下さい。
D1に条件文を書いて、複数条件があるなら
偽の時に、次の条件を書いていくようにすれば出来ます。
それでは。
例:
セル:内容
C1:abc
D1:=if(C1=E1,F1,if(C1=E2,F2,F3))
E1:abc
E2:123
F1:正解1
F2:正解2
F3:不正解
回答どうもありがとうございます。これなら出来そうです。また複数条件の時の判定のアドバイスのありがとうございます。
後で気がついたのですがC1は回答欄とし、E1とE2は答えです。答えがバレバレですね。E1とE2を対象のセルとして使い非表示に出来るのかな~?。
別シートにしてシートを非表示にするというやり方になるのかな。参考(本)に書いてあるとおりにはうまくいくのですが内容が変わるとエラーとなりなかなかうまくいきません。
No.3
- 回答日時:
質問にそって、コードを書いてみました。
書き方の一例です。内容については、各行にコメントを付けておきましたのでそちらを参照して下さい。
大まかには、
セルに入力
→Worksheet_Changeイベントが発生
→想定してあるセルに入力されていれば回答のチェックルーチン(共通)に飛ぶ
→指定があれば入力文字の指定等(全角文字、半角文字、数値等)をチェック
→回答自体をチェック
→回答内容によってメッセージを出力
の流れにしてみました。
ワークシート関数だけでなく、VBEで、配列を使ったり回答の範囲チェックしたり、ヒントを出したり(これを書きながら思いついた)いろいろなことが可能と思います。 ご参考に。
シートのコードウインドウに貼り付けます。
ここから
↓
'シートに入力された時にWorksheet_Changeイベントが発生する
Private Sub Worksheet_Change(ByVal Target As Range)
'答えが合っていれば『正解』
'合っていなければ『間違っています』+αを隣のセルに出す。
Select Case Target.Address(0, 0) '行・列は相対参照にしている(好みです)
Case "C1"
'セルC1:正解=abc 特に他のメッセージは出さない
Check_Kaitou Target, "abc", ""
Case "C2"
'セルC2:正解=ab 半角でない場合、『半角で入力して下さい』
Check_Kaitou Target, "ab", "半角指定"
Case "C3"
'セルC3:正解=あいう 全角でない場合、『全角で入力して下さい』
Check_Kaitou Target, "あいう", "全角指定"
Case "C4"
'セルC4:正解=123 数値でない場合、『数値で入力して下さい』
Check_Kaitou Target, "123", "数値指定"
End Select
End Sub
'回答のチェックと、回答が入力要件(半角や全角等)を満たしているかなどをチェックします
'引数は、回答:Kaitou、正解:Ans、追加チェックする内容:HanteiKubun
Sub Check_Kaitou(Kaitou As Range, Ans As String, HanteiKubun As String)
Dim msg As String '回答の隣に出すメッセージ
Dim kai As String '回答
Dim L As Integer '回答の文字列のカウンタ
kai = Kaitou.Text
Select Case HanteiKubun
Case "半角指定"
'全ての文字が半角か調べる
For L = 1 To Len(kai)
If Not Abs(Asc(Mid(kai, L, 1))) < 256 Then
msg = "半角で入力して下さい"
Exit For
End If
Next
Case "全角指定"
'全ての文字が全角か調べる
For L = 1 To Len(kai)
If Abs(Asc(Mid(kai, L, 1))) < 256 Then
msg = "全角で入力して下さい"
Exit For
End If
Next
Case "数値指定"
'数値か調べる
If Not IsNumeric(kai) Then
msg = "数値を入力して下さい"
End If
Case ""
'追加のチェックはしない
End Select
'最終のメッセージを作成する
If kai = Ans Then
msg = "正解"
Else
msg = "間違っています。" & msg
End If
'メッセージを表示する
Kaitou.Offset(0, 1) = msg
End Sub
回答ありがとうございます。数々の例文どうもです。
早速やってみました。
>'シートに入力された時にWorksheet_Changeイベントが発生する
こちらの方は動作も確認できました。
>'回答のチェックと、回答が入力要件(半角や全角等)を満たしているかなどを
すいませんこちらの内容はちんぷんかんぷんです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにの以下の設定方法について教えてください! C列にデータ入力の設定をしています。(出、入を 3 2022/06/22 01:33
- Excel(エクセル) Excelについて A1からA12まで、1月〜12月と入力し、 B1からB12の範囲に、C1とD1に 4 2022/05/26 22:48
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/08 09:05
- Excel(エクセル) EXCELでリターンキーが押されたらそのセルに特定の文字を表示したいのですが。 2 2022/08/07 12:58
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/06/15 14:11
- Excel(エクセル) Excel 特定セルの数値を参照したセルの0表示が空白にならないのはどうしてか? 3 2022/04/28 22:23
- Excel(エクセル) Excel 関数 数式 について 2 2022/09/02 21:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELマクロ 保護されているシ...
-
エクセルVBA(実行時エラー438...
-
エクセルテキストボックスの文...
-
データが入力されている隣のセ...
-
VBAで選択したセルのみ処理を実...
-
Swing 編集不可でも選択可能なJ...
-
メッセージを1度だけ表示したい。
-
エクセルのVBAでダブルクリック...
-
VBAのListBoxで複数選択して...
-
Excel VBA ダブルクリックで入...
-
ハイパーリンクされているファ...
-
VBAで丸をつけたいです。
-
EXCEL VBA Rangeの指定方法につ...
-
エクセルVBA セル選択後にカレ...
-
エクセルVBAを使って、エクセル...
-
VBAで、貼り付け禁止命令を実現...
-
ダブルクリックすると現在の時...
-
複数の画像をVBAでエクセルに貼...
-
Jtableの特定のセルの背景色や...
-
VBAの判定の仕方を教えてくださ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データが入力されている隣のセ...
-
EXCELマクロ 保護されているシ...
-
エクセルテキストボックスの文...
-
VBAで、貼り付け禁止命令を実現...
-
ハイパーリンクされているファ...
-
VBAで丸をつけたいです。
-
メッセージを1度だけ表示したい。
-
エクセルVBA(実行時エラー438...
-
ダブルクリックすると現在の時...
-
VBA セルに合わせて移動するが...
-
(VBA)アクティブセルを起点に...
-
Jtableの特定のセルの背景色や...
-
Windowsで動くVBAがmacOSで動か...
-
エクセルVBA セル選択後にカレ...
-
Excelのセル内にある図形を削除...
-
Excel VBA ダブルクリックで入...
-
セル色を5秒間隔で変える
-
StringGridでの文字入力制限
-
【VBA】参照値を1ずつ増やして...
-
マクロでのカーソル移動
おすすめ情報