- ベストアンサー
Excelで簡単なゲームを作ろう!
- ExcelでAからZまでの文字を入れて正解の文字を当てる簡単なゲームを作成したいですが、Ifの部分で型が一致しないエラーが出ます。どこが間違っているのか教えてください。
- もっと具体的には、If文の条件式と変数の型が一致していない可能性があります。正しい型の設定を確認してください。
- また、If文の中にも文法的なエラーがある可能性があります。正しい文法に修正してください。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
No4の >ElseIf "A" < a And a < "Z" Then を ElseIf "A" < a And a <= "Z" Then としてください。Zを入れると入力ミスになるので。 一応、No4はAを入力すると正解になります。
その他の回答 (7)
- nanndedaro04
- ベストアンサー率50% (1/2)
#3です。ダラダラ書いていたら他の方の回答あったんですね。 混乱させちゃうかもなんなので今ちょっとこのプログラム書いてみたので 私なりの正解の書いときますね。(プログラムって書き方はいくらでもある) Dim a As String Dim b As String Dim i As Integer a = "J" i = 0 b = InputBox("AからZまでの文字を入力", "文字当て", "A") Do While a <> "" i = i + 1 If a = b Then MsgBox i & "回目で正解!" Exit Do ElseIf "A" <= b And b <= "Z" Then If a > b Then b = InputBox("もっと後の数です。", "ハズレ") Else b = InputBox("もっと前の数です。", "ハズレ") End If Else b = InputBox("入力ミス") End If Loop
補足
わざわざ、ありがとうございます。 人によって書き方が違うため、私も自分なりの書き方を習得しようと思います。まだまだ勉強が必要ですが・・・。 こちらでも動きました。ありがとうございました。
- piroin654
- ベストアンサー率75% (692/917)
肝心なことを書き忘れていました。 このままでは全角のA~Zを入れるとミスが出ます。 半角のA~Zを入れる必要があります。
- piroin654
- ベストアンサー率75% (692/917)
No4の訂正。 >したがって、aに数値を入れると「ハズレ」が出ます。 ではなく、 「入力ミス」がでます。 ついでに、その他数値を入れると入力ミス
- piroin654
- ベストアンサー率75% (692/917)
プログラムのテーマ は、 文字当てですよね? >a = InputBox("もっと後の数です。", "ハズレ") ではなく、 >a = InputBox("もっと後の文字です。", "ハズレ") 理由: Dim a As String すなわち、aは文字列型を宣言している。 したがって、aに数値を入れると「ハズレ」が出ます。 こんなことを書いても分かりにくいかもしれないので、 Sub Ex667() Dim a As String Dim b As String Dim i As Integer a = "J" b = "A" a = InputBox("AからZまでの文字を入力", "文字当て", "A") Do While a <> "" i = i + 1 If a = b Then MsgBox i & "回目で正解!" Exit Do ElseIf "A" < a And a < "Z" Then If a = b Then a = InputBox("もっと後の文字です。", "ハズレ") Else a = InputBox("もっと前の文字です。", "ハズレ") End If Else a = InputBox("入力ミス") End If Loop End Sub で、動いていますが。どこでエラーが出ます?
補足
ご指摘通り、動くようになりました! 些細なミスも多かったようで、それに気付けなかった事を含め、勉強不足を痛感しました。 随分、悩んで頭を抱えていたので、ようやくスッキリしました。 ありがとうございました!
- nanndedaro04
- ベストアンサー率50% (1/2)
自らプログラムを書いてみるっていいですね。 えーと、このプログラム言い出せば色々あると思うのですが とりあえず、パッと見で分かる所を指摘させていただきます。 (1)なぜ、if文で落ちると思ったのか分からないのですが、ここで落ちます。正解は勉強ということで伏せて起きます。プログラムでは常に変数の型は意識して下さいね。 i = "A" (2)aが正解でbに入れるんですよね?今、変数に何が入っているのかも意識して下さい。 a = InputBox("AからZまでの文字を入力", "文字当て", "A") まだ、あると思うんですが色々やってみるのが一番勉強になるので 頑張って下さい!
- piroin654
- ベストアンサー率75% (692/917)
たとえば、 i = "A" ではなく、 b = "A" では? 変数宣言で、 Dim b As String Dim i As Integer としていますよ?
補足
たった今、変更してきました。 メッセージボックスが表示され、入力画面は出るようになったのですが、その下部分がダメなようです・・・。 正解の文字を入れれば終了できるのですが、やはり違うものを入れると、型が一致しないとのエラーが・・・。 もう少しチェックを続けてみますが、どうぞ御助力頂ければ幸いです。
- nt-natsu
- ベストアンサー率41% (15/36)
こんにちは。 質問の回答ではないのですが、Exsel って Excel のことですか。 わかりにくくなってしまうので、気をつけたほうがいいですよ。
補足
あ、ホントですね・・・。焦って、ロクに確認せず入力してしまいました。 正しくは、Exselでしたね。 よろしければ、プログラムの方にも回答して頂けると嬉しいです。
お礼
再度、ありがとうございます。 これで漸く、終了できました。悶々と悩んでいたのですが、これでかなりスッキリ解消されました! また、こんな遅い時間にも関わらず、回答して下さった方々、本当にありがとうございました。