過去ログ

                                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でキャンセルを押すと
デバックになってしまいます。
何故でしょうか?
 ───────────────────────────────────────  ■題名 : Re:inputboxでキャンセルをするとデバックになります?  ■名前 : JuJu <juju-bbs@su-u.com>  ■日付 : 02/11/12(火) 17:58  -------------------------------------------------------------------------
   KENさん、こんにちはぁ

>INPUTBOXでキャンセルを押すと
>デバックになってしまいます。
>何故でしょうか?

InputBox関数を使っている部分はどのようにかかれていますか?
 ───────────────────────────────────────  ■題名 : Re:inputboxでキャンセルをするとデバックになります?  ■名前 : KEN  ■日付 : 02/11/12(火) 18:20  -------------------------------------------------------------------------
   ▼JuJu さん:
>KENさん、こんにちはぁ
>
>>INPUTBOXでキャンセルを押すと
>>デバックになってしまいます。
>>何故でしょうか?
>
>InputBox関数を使っている部分はどのようにかかれていますか?

  Ans = InputBox("データ作成期間を選択してください!" _
      & vbCr & vbCr & "A番:1 B番:2 1日:3", "データ作成")

のように書きました。
戻り値を使って期間指定の処理をさせようとおもっていますが、
キャンセルを押したり未入力の場合でOKするとデバックになります。
宜しくお願いします。
 ───────────────────────────────────────  ■題名 : Re:inputboxでキャンセルをするとデバックに...  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/11/12(火) 18:30  -------------------------------------------------------------------------
   こんにちは〜

横から失礼しますー!

>  Ans = InputBox("データ作成期間を選択してください!" _
>      & vbCr & vbCr & "A番:1 B番:2 1日:3", "データ作成")

こちらで試してみると、特にエラーにはなりませんでしたよん。
「Ans」はどう宣言されましたか?
InputBox関数は、文字列型を返すので、キャンセルすると、空白文字「""」が返ってきてるようです。なので、例えば、Integer型で宣言してたりすると、「型が違います」とのエラーが出ます。

例えば数値を選択してもらいたい、とかの場合は、InputBox関数ではなくて、InputBoxメソッドを使うと、ええんではないでしょうか?

ヘルプ読んでみてね。
 ───────────────────────────────────────  ■題名 : かぶっちゃった  ■名前 : JuJu <juju-bbs@su-u.com>  ■日付 : 02/11/12(火) 18:33  -------------------------------------------------------------------------
   つんさん、ごめんなさい^^;
 ───────────────────────────────────────  ■題名 : InputBoxメソッド  ■名前 : JuJu <juju-bbs@su-u.com>  ■日付 : 02/11/12(火) 18:42  -------------------------------------------------------------------------
   InputBoxメソッドっていうのがあるんですね。
ヘルプ見て初めて知りました。新発見^^;

使えそうですね
 ───────────────────────────────────────  ■題名 : Re:InputBoxメソッド  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/11/12(火) 18:46  -------------------------------------------------------------------------
   JuJu さん

>InputBoxメソッドっていうのがあるんですね。
>ヘルプ見て初めて知りました。新発見^^;
>使えそうですね

えっえええーーーーーーー!!!
わたいが知ってて、JuJu師匠がしらないことがあったなんてーーーー!(@_@)
しんじられんっ!
 ───────────────────────────────────────  ■題名 : Re:InputBoxメソッド  ■名前 : JuJu <juju-bbs@su-u.com>  ■日付 : 02/11/13(水) 8:20  -------------------------------------------------------------------------
   つん師匠、こんにちはぁ

>わたいが知ってて、JuJu師匠がしらないことがあったなんてーーーー!(@_@)
>しんじられんっ!

今度からつんさんが師匠ってことで^^

たまに新発見があるので、飽きっぽい私でもExcelVBAを続けていけるのかな^^;
 ───────────────────────────────────────  ■題名 : Re:inputboxでキャンセルをするとデバックに...  ■名前 : KEN  ■日付 : 02/11/12(火) 19:35  -------------------------------------------------------------------------
   jujuさん、つんさんありがとうございました。
おっしゃるとうりで[Ans]はIntegerになってました。
そんなに時間が経っていないのに
お二人に回答いただけて感動です。
問題は解決しましたが、もう一つ質問させてください。
  Ans = InputBox("データ作成期間を選択してください!" _
      & vbCr & vbCr & "A番:1 B番:2 1日:3", "データ作成")

この場合間違って4以上の数字を入れたり0を入れてしまった場合の
処理の記入はどうしたら良いのでしょうか?
 ───────────────────────────────────────  ■題名 : Re:inputboxでキャンセルをするとデバックに...  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/11/12(火) 20:54  -------------------------------------------------------------------------
   どもども

>この場合間違って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
 ───────────────────────────────────────  ■題名 : Re:inputboxでキャンセルをするとデバックに...  ■名前 : KEN  ■日付 : 02/11/12(火) 21:24  -------------------------------------------------------------------------
   みなさん、ありがとうございました。
解決しました。
今回はすっごく勉強になりました。
僕の場合はほとんど本を読んで覚えてきたので
これで良いのかな〜って感じの記述が多いけど
このサイトはとても勉強になります。
ところで、
みなさんはどんな仕事をしている人たちなんでしょうね。(笑)
僕も人にアドバイスが出来るようになるまで頑張ります。
では、では。。。
 ───────────────────────────────────────  ■題名 : 先生! はい!  ■名前 : Jaka  ■日付 : 02/11/13(水) 9:46  -------------------------------------------------------------------------
   >    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
 ───────────────────────────────────────  ■題名 : おっしゃるとおりでございますにゃ  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/11/13(水) 10:11  -------------------------------------------------------------------------
   Jaka先生、おはよーございます♪

>If (CInt(Ans) < 1) Or (CInt(Ans) > 4) Then 
>直接数字と比較すると、不具合が出る時があると思います。
>こうした方が良いのではないでしょうか?

あ、そーですね。整数型に変換できないような文字を入力されちゃったときとかエラーになっちゃいますね。
Jakaさん、フォローありがとうございます♪

でも、そういうこと考えたら、やっぱり関数よりメソッド使うのが簡単そうやね。
メソッドだと、入力してもらう型を指定できるから、最初から数値しか入力できないようにできるし。・・・・と、私などは思います。
 ───────────────────────────────────────  ■題名 : さすが先生。  ■名前 : Jaka  ■日付 : 02/11/13(水) 10:45  -------------------------------------------------------------------------
   >でも、そういうこと考えたら、やっぱり関数よりメソッド使うのが簡単そうやね。
>メソッドだと、入力してもらう型を指定できるから、最初から数値しか入力できないようにできるし。・・・・と、私などは思います。

つんさん、おはようございます。
難しいこと色々ご存じですね!脱帽。 m(__)m
私は、あんまりと言うかまるっきり、そのような事は考えた事もありませんでした。
やっぱりそう言う事も勉強しないと、ダメでしょうか?

PS 
つんさんってすごい物を作って、公開しているんですね!
すっご〜い!
私には真似できません。
 ───────────────────────────────────────  ■題名 : Re:inputboxでキャンセルをするとデバックになります?  ■名前 : JuJu <juju-bbs@su-u.com>  ■日付 : 02/11/12(火) 18:33  -------------------------------------------------------------------------
   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
こんな感じに分岐すれば良いです。

ではではぁ
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 334