Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3345 / 13646 ツリー ←次へ | 前へ→

【62809】InputBox で未入力時に次の処理へ移りたい ノサップ 09/9/4(金) 18:53 質問[未読]
【62810】Re:InputBox で未入力時に次の処理へ移りた... kanabun 09/9/4(金) 19:03 発言[未読]
【62811】Re:InputBox で未入力時に次の処理へ移りた... kanabun 09/9/4(金) 19:10 発言[未読]
【62816】Re:InputBox で未入力時に次の処理へ移りた... ノサップ 09/9/5(土) 11:39 お礼[未読]

【62809】InputBox で未入力時に次の処理へ移りたい
質問  ノサップ  - 09/9/4(金) 18:53 -

引用なし
パスワード
   お世話になります。

以下のように、InputBoxを繰り返し使うように作ったのですが、キャンセルを押したときに終了する処理はわかったのですが、数値を未入力(もしくは0)の時にOKを押したときに次の処理へ移るようにしたいと思っているのですが、どうしてもできません。

以下で「a」を入力するときに、未入力でOKを押したときに「b」を入力する処理へ移りたいということです。

Sub 掛け金入力()

  Dim a As Long
  Dim b As Long

  a = Application.InputBox(prompt:="金額A", Type:=1)
  
   If a = False Then
    MsgBox "キャンセル"
    Exit Sub
   End If
        
  Range("l6").Select
  Range("l6") = a * 0.02
  
  b = Application.InputBox(prompt:="金額B", Type:=1)
  
   If b = False Then
    MsgBox "キャンセル"
    Exit Sub
    End If
  
  Range("l7").Select
  Range("l7") = b * 0.02

End Sub

初歩的なことかもしれませんが、どうかよろしくご教示ください。
お願いいたします。

【62810】Re:InputBox で未入力時に次の処理へ移り...
発言  kanabun  - 09/9/4(金) 19:03 -

引用なし
パスワード
   ▼ノサップ さん:
キャンセルを押したときに終了する処理はわかったのですが、数値を未入力(もしくは0)の時にOKを押したときに次の処理へ移るようにしたいと思っているのですが、

そのまえに、

>  Dim a As Long
>  Dim b As Long

変数の型をLongにしているから、

>   If a = False Then

は「型が違います」と叱られませんか?

【62811】Re:InputBox で未入力時に次の処理へ移り...
発言  kanabun  - 09/9/4(金) 19:10 -

引用なし
パスワード
   失礼

変数a をLong型で宣言して、

>  a = Application.InputBox(prompt:="金額A", Type:=1)
>  If a = False Then

キャンセルで Falseが返った時にも、エラーにはならないですね。
a には False が 型キャストされ、 0 が入ってるんですね。
ただ、そうすると、
Cancelボタンが押されたのか、空打ちされたのか、
判別できないですね?

一度、Variant型の変数でInputBoxメソッドの戻り値を受けて、
Falseか、0 かを判定してから、
False なら Exit Sub
0なら 処理をスキップ、
と分岐したほうがよいと思います。

【62816】Re:InputBox で未入力時に次の処理へ移り...
お礼  ノサップ  - 09/9/5(土) 11:39 -

引用なし
パスワード
   ▼kanabun さん:
わかりました!!何とか頑張ってみます。
ありがとうございます。

3345 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free