[[20031106091501]] 『vBA inputboxのエラー処理について』(じゃぽね) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『vBA inputboxのエラー処理について』(じゃぽね)

 いつも大変お世話になっております。既回答で教えていただいたinputboxを
 使ってセル範囲を選択するマクロなのですが、box上でキャンセルをクリックすると
 FALSEが戻ってしまいます。それでエラー処理で再度入力をさせるようにしたく
 本を見て以下のようなマクロを作ってみたのですがどうにもうまくいきません。
 再度FALSEが戻ってしまいます。 
 恐縮ですが見ていただけないでしょうか。Sub kusizasi()

 Dim c As String
 On Error GoTo errorhandler

 inputc: 
  Range("B6").Select
  c = Application.InputBox(Prompt:="1月シート", Type:=0)
  ActiveCell.Formula = c
  Exit Sub

 errorhandler:
  Resume inputc

End Sub


 エラートラップは、なるべく使わない方が良いと思います。
 もし使うとしてもエラーナンバーを限定して使った方が、
 予想外のエラーの時にも対応できますので、デバッグし易くなります。

 Sub main()
 Dim c As String

 inputc:

  c = Application.InputBox(Prompt:="1月シート", Type:=0)

  If c = "False" Then
    MsgBox "キャンセルされました。再度、セル範囲を選択して下さい。", 48
    GoTo inputc
  End If

  Range("B6").Formula = c

 End Sub

   (INA)


 Goto もあまり使わない方が良いので、こっちの方が良いかな。

 Sub main()
 Dim c As String

  Do
    c = Application.InputBox(Prompt:="1月シート", Type:=0)
    If c = "False" Then MsgBox "キャンセルされました。再度、セル範囲を選択して下さい。", 48
  Loop Until c <> "False"

  Range("B6").Formula = c

 End Sub


 早速ありがとうございます。アドバイスまでいただきありがとうございます。
 実行できました。あら書き込みしようとしたら新しいものまで、早速やってみます。
 正直マクロも(INA)さんをはじめ皆さんに教えていただいたものをなんとか
 理解しようとつとめていますがなかなかものにならず、勝手にかえてみたりすると
 とんでもないエラーがでてしまったりで。
 
 それともうひとつ恐縮ですが以下のマクロを設定したときに、2月のシート
 が存在しないとずっと探しにいって、結局電源を切る羽目になってしましました。
 よい解決方法はありますか?
 最初からシートを用意しておいてブックの保護である程度できるのですが、
 そうするとシートを増やせなくなったりしてしまうので。
 

 Range("b7:u7").Replace what:="1月", replacement:="2月" (じゃぽね)


 説明文とコードの内容が、一致していないと思いますが・・?

 上記のコードはただの「置換」ですね。

 シートの有無の確認は、For Each のループで調べることが出来ます。

 Private Sub CommandButton2_Click()
 Dim mySheet As Worksheet

 For Each mySheet In Worksheets
    If mySheet.Name = "2月" Then
        MsgBox "シート名「2月」が、見つかりました。"
        Exit Sub
    End If
 Next mySheet

 MsgBox "このブックにシート名「2月」は、ありません。"
 End Sub

 (注)シート名の全角半角は、区別してください。
  (INA)


 早速ありがとうございます。いつも返事が遅くなり申し訳ありません。
 また勉強させていただきます。おっしゃるとおりコードを一部しか
 かきませんでした。またよろしくお願いします。(じゃぽね)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.