[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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
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.