Page 334 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼inputboxでキャンセルをするとデバックになります? KEN 02/11/12(火) 17:35 ┗Re:inputboxでキャンセルをするとデバックになります? JuJu 02/11/12(火) 17:58 ┗Re:inputboxでキャンセルをするとデバックになります? KEN 02/11/12(火) 18:20 ┣Re:inputboxでキャンセルをするとデバックに... つん 02/11/12(火) 18:30 ┃ ┣かぶっちゃった JuJu 02/11/12(火) 18:33 ┃ ┃ ┗InputBoxメソッド JuJu 02/11/12(火) 18:42 ┃ ┃ ┗Re:InputBoxメソッド つん 02/11/12(火) 18:46 ┃ ┃ ┗Re:InputBoxメソッド JuJu 02/11/13(水) 8:20 ┃ ┗Re:inputboxでキャンセルをするとデバックに... KEN 02/11/12(火) 19:35 ┃ ┗Re:inputboxでキャンセルをするとデバックに... つん 02/11/12(火) 20:54 ┃ ┣Re:inputboxでキャンセルをするとデバックに... KEN 02/11/12(火) 21:24 ┃ ┗先生! はい! Jaka 02/11/13(水) 9:46 ┃ ┗おっしゃるとおりでございますにゃ つん 02/11/13(水) 10:11 ┃ ┗さすが先生。 Jaka 02/11/13(水) 10:45 ┗Re:inputboxでキャンセルをするとデバックになります? JuJu 02/11/12(火) 18:33 ─────────────────────────────────────── ■題名 : inputboxでキャンセルをするとデバックになります? ■名前 : KEN ■日付 : 02/11/12(火) 17:35 -------------------------------------------------------------------------
いつも参考にさせてもらっています。 初歩的な質問ですみません。 INPUTBOXでキャンセルを押すと デバックになってしまいます。 何故でしょうか? |
KENさん、こんにちはぁ >INPUTBOXでキャンセルを押すと >デバックになってしまいます。 >何故でしょうか? InputBox関数を使っている部分はどのようにかかれていますか? |
▼JuJu さん: >KENさん、こんにちはぁ > >>INPUTBOXでキャンセルを押すと >>デバックになってしまいます。 >>何故でしょうか? > >InputBox関数を使っている部分はどのようにかかれていますか? Ans = InputBox("データ作成期間を選択してください!" _ & vbCr & vbCr & "A番:1 B番:2 1日:3", "データ作成") のように書きました。 戻り値を使って期間指定の処理をさせようとおもっていますが、 キャンセルを押したり未入力の場合でOKするとデバックになります。 宜しくお願いします。 |
こんにちは〜 横から失礼しますー! > Ans = InputBox("データ作成期間を選択してください!" _ > & vbCr & vbCr & "A番:1 B番:2 1日:3", "データ作成") こちらで試してみると、特にエラーにはなりませんでしたよん。 「Ans」はどう宣言されましたか? InputBox関数は、文字列型を返すので、キャンセルすると、空白文字「""」が返ってきてるようです。なので、例えば、Integer型で宣言してたりすると、「型が違います」とのエラーが出ます。 例えば数値を選択してもらいたい、とかの場合は、InputBox関数ではなくて、InputBoxメソッドを使うと、ええんではないでしょうか? ヘルプ読んでみてね。 |
つんさん、ごめんなさい^^; |
InputBoxメソッドっていうのがあるんですね。 ヘルプ見て初めて知りました。新発見^^; 使えそうですね |
JuJu さん >InputBoxメソッドっていうのがあるんですね。 >ヘルプ見て初めて知りました。新発見^^; >使えそうですね えっえええーーーーーーー!!! わたいが知ってて、JuJu師匠がしらないことがあったなんてーーーー!(@_@) しんじられんっ! |
つん師匠、こんにちはぁ >わたいが知ってて、JuJu師匠がしらないことがあったなんてーーーー!(@_@) >しんじられんっ! 今度からつんさんが師匠ってことで^^ たまに新発見があるので、飽きっぽい私でもExcelVBAを続けていけるのかな^^; |
jujuさん、つんさんありがとうございました。 おっしゃるとうりで[Ans]はIntegerになってました。 そんなに時間が経っていないのに お二人に回答いただけて感動です。 問題は解決しましたが、もう一つ質問させてください。 Ans = InputBox("データ作成期間を選択してください!" _ & vbCr & vbCr & "A番:1 B番:2 1日:3", "データ作成") この場合間違って4以上の数字を入れたり0を入れてしまった場合の 処理の記入はどうしたら良いのでしょうか? |
どもども >この場合間違って4以上の数字を入れたり0を入れてしまった場合の >処理の記入はどうしたら良いのでしょうか? こんな感じかな? Sub test() Dim Ans As String Dim blnFlag As Boolean blnFlag = False Do While blnFlag = False Ans = InputBox("データ作成期間を選択してください!" _ & vbCr & vbCr & "A番:1 B番:2 1日:3", "データ作成") If Ans = "" Then Exit Sub Else If (CInt(Ans) < 1) Or (CInt(Ans) > 4) Then MsgBox "1から3までの数字を入力するにゃ!!" Else MsgBox Ans & "番が選択されたにゃ♪" blnFlag = True End If End If Loop End Sub |
みなさん、ありがとうございました。 解決しました。 今回はすっごく勉強になりました。 僕の場合はほとんど本を読んで覚えてきたので これで良いのかな〜って感じの記述が多いけど このサイトはとても勉強になります。 ところで、 みなさんはどんな仕事をしている人たちなんでしょうね。(笑) 僕も人にアドバイスが出来るようになるまで頑張ります。 では、では。。。 |
> Else > If (CInt(Ans) < 1) Or (CInt(Ans) > 4) Then > MsgBox "1から3までの数字を入力するにゃ!!" > Else > MsgBox Ans & "番が選択されたにゃ♪" > blnFlag = True > End If > End If つんさん、こんにちは。 If (CInt(Ans) < 1) Or (CInt(Ans) > 4) Then 直接数字と比較すると、不具合が出る時があると思います。 こうした方が良いのではないでしょうか? ElseIf IsNumeric(Ans) Then If (CInt(Ans) < 1) Or (CInt(Ans) > 4) Then MsgBox "1から3までの数字を入力するにゃ!!" Else MsgBox Ans & "番が選択されたにゃ♪" blnFlag = True End If End If |
Jaka先生、おはよーございます♪ >If (CInt(Ans) < 1) Or (CInt(Ans) > 4) Then >直接数字と比較すると、不具合が出る時があると思います。 >こうした方が良いのではないでしょうか? あ、そーですね。整数型に変換できないような文字を入力されちゃったときとかエラーになっちゃいますね。 Jakaさん、フォローありがとうございます♪ でも、そういうこと考えたら、やっぱり関数よりメソッド使うのが簡単そうやね。 メソッドだと、入力してもらう型を指定できるから、最初から数値しか入力できないようにできるし。・・・・と、私などは思います。 |
>でも、そういうこと考えたら、やっぱり関数よりメソッド使うのが簡単そうやね。 >メソッドだと、入力してもらう型を指定できるから、最初から数値しか入力できないようにできるし。・・・・と、私などは思います。 つんさん、おはようございます。 難しいこと色々ご存じですね!脱帽。 m(__)m 私は、あんまりと言うかまるっきり、そのような事は考えた事もありませんでした。 やっぱりそう言う事も勉強しないと、ダメでしょうか? PS つんさんってすごい物を作って、公開しているんですね! すっご〜い! 私には真似できません。 |
KENさん、こんにちはぁ > Ans = InputBox("データ作成期間を選択してください!" _ > & vbCr & vbCr & "A番:1 B番:2 1日:3", "データ作成") おそらく、Ans が整数型で定義されているのだと思います。 なので、一旦文字列で受けて、 Dim Ans2 As String Ans2 = InputBox("データ作成期間を選択してください!" _ & vbCr & vbCr & "A番:1 B番:2 1日:3", "データ作成") If IsNumeric(Ans2) Then Ans = Val(Ans2) '処理 ElseIf Ans2 <> "" Then '数字じゃないよ Else 'キャンセルだよ End If こんな感じに分岐すれば良いです。 ではではぁ |