• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excel InputBox内はどう表記すれば?)

Excel InputBox内の表記について

このQ&Aのポイント
  • ExcelのInputBox内での内容と入力した内容を比較する方法が知りたいです。
  • 特定の文字列と入力した内容が等しいかどうかを判定するためのIf文の作成方法を教えてください。
  • タイピングの練習として、InputBoxの内容と特定の文が等しい場合にカウントを増やすプログラムを作成したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

#3の回答者です。 >私が知りたいのは、InputBoxを利用した時、そのInputBox内で表示されるようにした文章と、その後ユーザーが入力した文章が一致しているかどうか判断するプログラムはどう書けばいいのか、ということです。 基本的なものは、まず教本で倣う(真似する)ことから始まります。自分がああしたい・こうしたいと思うのは、通常の人で1年先、早い人で半年先です。掲示板で、VBAの質問はまだ早過ぎるようです。 ----------------- VBAの基本の問題です。(VBEditorで入力せずに答えが言えること) (1)・Excelのマクロは、通常、どこに登録するか?  (a).シートモジュール, (b).標準モジュール, (c).ThisWorkbook モジュール, (d).Class モジュール (2)・マクロを実行中に、マクロを止めたい場合にはどうするか?  (a).ESC を押す, (b).Pauseを押す, (c).F8を押す, (d).End を押す (3)・マクロをキーを押さずに途中で止めたい場合はどうするか?  (a).Endと書く, (b).Exit Subと書く, (c).Pauseと書く, (d).Stop と書く (4)・変数を宣言する時は、Dim を使いますが、その時に、j の変数型は何か?  例:Dim i, j, k As Long  (a).Double型, (b).Integer型, (c).Long型, (d).Variant型 (5)・InputBox 関数を使いましたが、どこかがおかしいです。これを直すには、どうしたらよいか?  Sub Test1()  Dim ret As Variant  ret = InputBox("何か文字を入れてください。")  If IsNumeric(ret) Then    MsgBox ret & vbCrLf & "数字が入りました。"  ElseIf Not IsNumeric(ret) Then    MsgBox ret & vbCrLf & "文字が入りました。"  Else    MsgBox ret & vbCrLf & "キャンセルされました。"  End If  End Sub   (a).Asc関数の文字コードで判定する, (b).ワークシート関数のIsTextを使って判定する, (c).ret = False で判定する, (d).そもそもこういう書き方は良くない. (ただし、下記の戻り値のString型にする方法や、裏技は除外します。) ----- 今回の質問で、以下のようなレベルでも、だいたい、半年ぐらいの経験が必要です。 Sub Test2()  Const MSG As String = "季節は"  Const SENTENCE As String = "季節は冬です"  Dim kotae As String  Application.SendKeys "{RIGHT}"  kotae = InputBox("単語を入力してください。", , MSG)  If kotae = "" Then Exit Sub '終了  If InStr(kotae, "です") = 0 Then   kotae = kotae & "です"  End If  If SENTENCE = kotae Then   kotae = MsgBox("正解です!")  ElseIf SENTENCE <> kotae Then   kotae = MsgBox("不正解です。", vbCritical)  End If End Sub UserFormを使えば、入力に対して反映するようにはなりますが、それは、また違ったスタイルにはなります。また、他にもイレギュラーな方法もありますが、そういうことを覚えてもしょうがないです。まず、基本からしっかりと勉強するようにしましょう。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

そのままだと回答は#2のお答えのようになると思う。 質問者が聞きたいのはArray1の要素の各々と、Array2の要素の各々の組み合わせの数だけ回答がありえて その処理に困っているのではないのかな。 それの場合は質問の書き方が不完全ですよ。 >kotae = InputBox(問1 : array1 & "は" & array2 & "です") なんて1つの場合はArrayを持ち出すことはありえないでしょう。 普通はコンボボックスなど2つ使ってArray1の系列のどれかと、Array2の系列のどれかをそれぞれ選択させて、選択された結果(文字列)の組み合わせで処理を分けるでしょう。 その場合CASE文のネストが使えるかも。 コンボボックスなど使えないのなら、こんな処理は質問者には早すぎると言うこと。 せめてArray1の質問回答とArry2の質問を別に分けてはどうですか。 Arrayの中の文字列をPrompt文に出したいなら Sub test01() x = Array("東京", "名古屋", "大阪") pmpt = "" For i = 0 To UBound(x) pmpt = pmpt & x(i) & "," Next i pmpt = Left(pmpt, Len(pmpt) - 1) & "どれですか" MsgBox pmpt ans1 = InputBox(pmpt) End Sub Arrayの要素が多いと読むのも、うるさくなるが。 質問者のいう(質問の表現)とおり考えていたら、おかしくなる例では無いかな。 質問の意図を誤解していたら申し訳ないが。

aida13
質問者

補足

回答ありがとうございます。質問があいまいで分かりにくかったようですので補足します。私が知りたいのは、InputBoxを利用した時、そのInputBox内で表示されるようにした文章と、その後ユーザーが入力した文章が一致しているかどうか判断するプログラムはどう書けばいいのか、ということです。たとえばプログラムを実行して、 1問目:季節は冬です と表示されたら、表示したボックスに入力するためのスペースがあり、そこに 季節は冬です と入力し、それが最初に表示された文章と完全に一致していればseikai + 1とし、不一致ならそのまま次の問題にいく、というような流れのプログラムを書きたいのです。しかし、それが一致しているか判断する方法が不明なので質問させていただきました。分かりにくくてすみませんでした。あと私はexcel初心者なので配列ではなく、条件判断を使ったものでお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

InputBox の使い方に混乱しているようですから、Array に手は出さないほうがよいかもしれませんが、VB系では、以下のようなスタイルが一般的です。C言語のように、入力がそのまま反映するようにはいきませんね。また、InputBox には、二種類あって、メソッドと関数があって、以下のように、メソッドを使うのが一般的です。 'データ型のVariant は省略しています。 Sub TestMacro1()  Dim Array1, Array2  Dim i As Integer  Dim Kotae  Dim Seikai As Integer  Array1 = Array("季節", "食べ物", "天気", "動物")  Array2 = Array("冬", "お餅", "雪", "犬")  For i = LBound(Array1) To UBound(Array2)   Kotae = Application.InputBox("問" & StrConv(i + 1, vbWide) & ": " & Array1(i) & "は? ", Type:=2)   If Kotae = False Then Exit For   If Array2(i) Like Kotae Then    MsgBox "答" & StrConv(i + 1, vbWide) & ": " & Array1(i) & "は" & Array2(i) & "です。", , "正解!"    Seikai = Seikai + 1   Else    MsgBox Kotae & vbCrLf & "不正解です。", vbCritical, "不正解"   End If  Next  MsgBox "正解数:" & Seikai End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

でしたら If kotae = array1 & "は" & array2 & "です" Then seikai = seikai + 1 End If にすればいいだけの話では?

全文を見る
すると、全ての回答が全文表示されます。
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

array1 = "季節" array2 = "冬" If InputBox("問1 :" & array1 & "は" & array2 & "です") = array1 & "は" & array2 & "です" Then seikai = seikai + 1 End If こういうことでしょうか

aida13
質問者

補足

形としてはそんな感じです。ただ、質問に書いたInputBoxはそのままに、そのあとに続く形でIf文を作ろうと考えています。InputBoxをIf文内に持ってくると前のInputBoxとかぶってしまい、同じ内容が2度表示されてしまいます。ですので、If文内にInputBoxを持ってくるのはちょっとまずいです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBA inputbox関数について

    質問をさせてください。 VBA inputbox関数にて 数字を入力をし、その数字を元に挿入を行うというものを施しています。 そして下記の内容で実際は動くのですがどうしても疑問点が浮かんできます。 それはinputbox関数には宣言をしないと文字列として処理されますよね? なので、宣言をlongにして整数化をしています。 しかし、If "1" <= buf1 <= "65536" Thenの部分で 数字に""(ダブルコーテーション)を入れないとうまく作動しません。 例えば「0」を入力しても正の処理へ行います。 ダブルコーテーションで囲んでいる数値は文字列として認識されるはず・・ 入力は数値として宣言をしているのだからダブルコーテーションはいらないのではないんでしょうか? また、もし数字ではなく、記号などを入力をしてしまった場合の偽の処理へいくにはどうすれば いいでしょうか? 恐れ入りますがよろしくお願いいたします。 Sub test() Dim buf1 As Long buf1 = InputBox("コピー先の列番号を入力してください") If "1" <= buf1 <= "65536" Then Cells(buf1, 1).EntireRow.Insert Else MsgBox "正しい列番号を入力してください" Exit Sub End If End Sub

  • PHPのシンプルな構文(初心者)

    ランダムに出る掛け算の答えを入力して 別ファイルで正解か不正解という表示をする構文なのですが 「input type="hidden"」部分の値の出力・受取りができず 正しく実行がされません。 どこが間違っているのでしょうか? よろしくお願いいたします。 in.php -------------------------------------- <?php $saki = rand(1,9); $ato = rand(1,9); echo "$saki X $ato"; $seikai = $saki*$ato; ?> <html> <body> <form method="post" action="out.php"> <input type="text" name="kotae"> <input type="hidden" name="hid" value="<?php $seikai ?>"> ←※ <input type="submit" value="回答"> </form> </body> </html> -------------------------------------- out.php -------------------------------------- <?php $kotae = $_POST["kotae"]; $seikai = $_POST["hid"];     ←※ if($kotae == $seikai){ echo "正解です"; }else{ echo "間違っています。"; } echo "<hr>正解は{$seikai}です。"; ?> --------------------------------------

    • ベストアンサー
    • PHP
  • InputBoxから論理式を得てIF文の論理式に反映したいのですが?

    InputBoxで、論理式を入力させて、その論理式が同じマクロ内のIF文の論理式に反映させたいのですが、”型が一致しません”というエラーが出てしまいます。どうすればよいのでしょうか?お教えください。

  • InputBox関数について教えて下さい。

    InputBox関数について教えて下さい。 記述内容は以下の通りです。 Sub 追加() Dim tuika As Double tuika = Application.InputBox( _ Title:="追加", _ Prompt:="追加する項目を【全角大文字】で入力して下さい。", _ Left:=700, _ Top:=100, _ Type:=2) If tuika = False Then Exit Sub With Worksheets("Sheet1") .Range("B10").Value = tuika LastRow = Worksheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Row + 1 Worksheets("Sheet2").Range("A" & LastRow).Value = Worksheets("Sheet1").Range("B10").Value End With End Sub 困っているのは、Type:=2)の部分です。 文字列を指定しているのですが数値は入力出来るのですが肝心の文字列が入力出来ない状況です。 どなたかご指導をお願い致します。 【環境】 OS = WindowsXP SP3 Excel = 2003

  • function処理後、IE以外初期化されてしまいます

    以下のスクリプトでドロップダウンから「フランス」を選ぶと正解と表示され、alertも出ます。 その後、IEでは表示された内容で、ドロップダウンの選択された状態が残るのですが、firefox,opera,safariともreloadされたように初期化されてしまいます。 どうしたら初期化されないように出来るでしょうか。 <html> <head> <script type="text/javascript"> <!-- var seikai = new Array(0,10,2,7,12,14,6,16,15,3,9,11,4,5,13,8,1); var msg_text = ""; var kotae = new Array(); function check1(){ seikai_count = 0; kotae=""; for(i=1;i<2;i++){ if(seikai[i]==document.getElementById("q"+i).value) seikai_count++; } msg_text = seikai_count + " 問正解です"; document.getElementById("msg").innerHTML = msg_text; alert(msg_text); return; } // --> </script> </head> <body> <form name="quiz"> <select id="q1"> <option value="0">---- <option value="1">アラビア <option value="2">スウェ-デン <option value="3">スペイン <option value="4">タイ <option value="5">ドイツ <option value="6">トルコ <option value="7">ビルマ <option value="8">ヒンディー <option value="9">フィリピン <option value="10">フランス <option value="11">ベトナム <option value="12">ペルシャ <option value="13">ポルトガル <option value="14">モンゴル <option value="15">ルーマニア <option value="16">ロシア </select> <div id="msg"></div> <button onclick="javascript:check1();">正解数をみる</button> </form> </body> </html>

  • ,プログラミングでの文章の書き換え

    以下の文章をrepeat文ではなくwhile文で書くとどうなりますか? program Problem6_3; {数当てゲーム} var Kotae, Suisoku, Kaisu, : intenger; begin Writeln('数当てげーむをします.'); Writeln('二桁以下の整数を入力してください.'); Randaomize; kotae := Random(100); repeat Kaisu : = kaisu + 1; Write('? '); Readln(Suisoku); if Kotae > Suisoku then Writeln('もっと大きい数です.') else if Kotae < Suisoku then Writeln('もっと小さいかずです.') else Write('正解です.') until Suisoku = Kotae; Writeln(Kaisu, ' 回で当たりました.');

  • エクセル if文を乱用したら・・・

    教えてください タイトルどおりエクセルのif文をひとつのセル内で ifを15回ぐらい繰り返したところ(=if~、if~、if~、・・・・) 入力時のレスポンスがとても遅くなってしまいました。 内容としては 1を入力するとりんご 2を入力するとみかん・・・・など単純な物が15行ぐらい続くもので、 リストは別なシートにあります。 対処法などありましたら教えてください よろしくお願いします。

  • for文~break

    break文に達した時、for文から抜けますか?それとも、if { }から抜けるんですか? for文はどこまで影響下にありますか? if ( i==5 ) printf ("サーバーが見つかりません"); まででしょうか? また  if ( i == 5 ) で5なら、実行としていますが、 6,や,8など5 以外でも、サーバーが見つかりません と if文が実行される見たいですが、なぜですか? 教えてください。 #include<stdio.h> int main(void) { int array[5][2]={ {1,14}, {2,28}, {3,19}, {4,8}, {5,15}, }; int sever; int i; printf("番号を入力してください"); scanf("%d",&sever); for( i=0 ; i<5 ; i++ ) if ( sever == array[i][0] ){ printf ( "%d 番には, %d 人います。\n",sever,array[i][1]); break; } if (i==5) printf("サーバーが見つかりません"); return 0; }

  • ループと条件文を使って・・・

    ループと条件文を使ってプログラムを作るのですが、 一日の食費と、何日間生活したいか を入力して、実行すると『○○○円の予算がかかる』というのを友達が作ってくれました。 (友達と一緒に課題を制作することになっているので) 食費を「en」、日数を「hi」、実行した後表示されるラベルを「ans」とすると、 コードは Private Sub Command1_Click() If en.Text="" And hi.Text="" Then ans="数字を入力して下さい" Else       e=en.Text h=hi.Text If IsNumeric(e) And IsNumeric(h) Then For i=1 to h Kotae=kotae + e Next ans="あなたが"& e &"円の食事を"& h &"日間食べるには、"& kotae &"円の予算がかかる。" Else:ans="数字を入力して下さい。" End If End If End Sub となっていました。 私が理解していないのか、このコードでは腑に落ちません… 分かる方、わかりやすく説明していただけたらとても助かります。 また、こうした方がもっといいプログラムになる などアドバイスなどでも結構ですので、 よろしくお願い致します。

  • PHPのif文について。

    今PHPのif文で前のページで入力したIDとPWをファイルで読み込んだIDとPWを使い 一致したらログインするという形をとろうとしています。 ぶっつけでは不安なので一応if文が通るかどうか実験したのですが、 Parse error: syntax error, unexpected '[', expecting '(' in C:\xampp\htdocs\ninsho.php on line 7 とエラーが出てきます。 軽く調べたところ[の使いかたを間違えてるとあったのですが、[は配列の場所を指定するのに 必須だと思うのでおかしいところがわかりません。 ちなみに全角なんじゃないかと思い全部打ち直してるので全角で入力という間違いはありません。 ↓こちらが今回の問題のものです。 1:<?php 2:$id = $_POST["id"]; 3:$pw = $_POST["pw"]; 4:$array = file("C:\acount.csv"); 5:for ($i=0; $i < count($array); $i++) { 6:$line = explode(",", $array[$i]); 7:if ($id === array[0] && $pw === array[1]) 8:{ 9:print $id 10:} 11:} 12:?> if文の===と==とimplodeは試してみましたが同じエラーでした。 どなたか原因のわかる方はいらっしゃらないでしょうか? ※ 1:などは行数をわかりやすくるるために今入力したものです。

    • 締切済み
    • PHP

専門家に質問してみよう