
No.4ベストアンサー
- 回答日時:
#1-3、cjです。
#3お礼欄へのレスです。> デバッグモードに入らないから、
> Trueに戻らない危険が有るのですね。
はい、その通りです。
滅多に無い、ことかも知れませんが、反響は大きそうです。
もう少し扱い易い方法はないか?ということで思いつきましたが、
UserformをApplication.Windowの外、見えない場所に
.Show vbModal表示して、処理後にHide
なんて変化球も、アリかも知れませんね。
No.3
- 回答日時:
#1、2、cjです。
#2お礼欄へのレスです。計算処理そのものについて、実行時エラーが起こることはない、と、
断言できる内容なら、何も考えなくていいです。
今は何も問題なかったとしても、後々追加される記述の方で、
エラーの可能性を看過してしまったり、というのは、
よくあることなので、心掛け程度には理解しておいた方がいいです。
> デバッグモードに入るのは自分だけなので、
...
> 計算処理中のエラーには、しっかりトラップを掛けた方がいいです。
> とはどういう意味でしょうか?
エンドユーザーによる実行に際して、もし実行時エラーとなり、
実行時エラーを報せるダイアログが表示されてしまうと、
VBAを知らない大抵のユーザーは、[終了]を押してしまいますよね?
そうすると、
> > エラーダイアログからデバッグせずに終了すると、
> > (再起動するまで)シート上で編集が出来なくなる、
ということになり、そのユーザーは、
驚きと困惑で手が止まってしまうことでしょう。
ヘルプに書いてあるところの
> > ただし、このプロパティに False を設定したときは、マクロの終了前に必ず設定を True に戻してください。
を実践する為に、
エラーが起きた場合、どのように処理を抜ける(または復旧/継続する)か決めておいて、
必ず、
Application.Interactive = True
を実行するようにOn Error ステートメントでエラートラップを掛けておく等の対策が必要、
ということです。#んー、なんか説明下手ですみません。
例えば、エラーが出たら、処理は中途のまま、ただSubを抜けるのなら、こんな感じ。
Sub HogeHoge()
Application.Interactive = False
On Error GoTo ErrOut_
' ' (この行以降でエラーが起きれば即、ErrOut_行へジャンプ)
' ' 計算処理
' ' 計算処理
' ' 計算処理
ErrOut_:
Application.Interactive = True
If Err Then MsgBox "処理HogeHogeはエラーにより不正終了しました。" _
& "表示中のダイアログのコピーを取った上で" _
& "担当○○まで連絡してください。" _
& vbLf & Err & vbLf & Err.Description
End Sub
No.2
- 回答日時:
#1.cjです。
#1訂正と補足です。Application.Interactive = False
' ' 計算処理
Application.Interactive = True
ドットがダブっていました。失礼。
それと、計算処理中のエラーには、しっかりトラップを掛けた方がいいです。
または、エラーダイアログからデバッグせずに終了すると、
(再起動するまで)シート上で編集が出来なくなる、
ということを強く意識しておいた方がいいです。
訂正、補足、以上です。
ありがとうございます。
デバッグモードに入るのは自分だけなので、
Trueに戻すことを覚えておきます。
計算処理中のエラーには、しっかりトラップを掛けた方がいいです。
とはどういう意味でしょうか?
トラップが良く分かりません。
No.1
- 回答日時:
こんにちは。
ユーザー操作による手作業での編集を無効にする
Application..Interactive = False
' ' 計算処理
Application..Interactive = True
一応、ヘルプの内容を確認しておいてください。
以下VBAヘルプより抜粋
====================================
Application.Interactive プロパティ
True の場合、Excel が対話モードになります。既定値は True です。このプロパティが False に設定されると、キーボードやマウスからの入力を受け付けなくなります。ただし、表示されたダイアログ ボックスへの入力は可能です。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。
構文
式.Interactive
式 Application オブジェクトを表す変数。
備考
入力できない状態にしておくと、マクロで Excel のオブジェクトを移動したりアクティブにしているときに、ユーザーからの干渉を防ぐことができます。
DDE、または OLE オートメーションを使ってほかのアプリケーションと Excel とでデータをやり取りするときには、このプロパティに False を設定しておくと便利です。
ただし、このプロパティに False を設定したときは、マクロの終了前に必ず設定を True に戻してください。True に戻すのを忘れると、マクロが終了しても Excel に入力することができません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Access の VBA 実行中に他の操作をさせたくない
Visual Basic(VBA)
-
Excelでマクロ実行中に画面を固定する方法
Visual Basic(VBA)
-
【VB2008】 マウス操作の一時的無効化
Visual Basic(VBA)
-
-
4
Excelのマクロボタンをダブルクリックされて困っています
Visual Basic(VBA)
-
5
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
6
マクロボタンをある条件の時にだけ、表示させたいのですが・・・
その他(Microsoft Office)
-
7
array関数で格納した配列の型を変更する
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
vbaのエラー対応(実行時エラー...
-
private subモジュールを他のモ...
-
Word VBA。各マクロの間に待ち...
-
特定のファイルを他のプロセス...
-
マクロで、次のコードへ行く前...
-
複数個のTextBoxでいずれかの内...
-
VBA For Each 〜 複数条件について
-
どうやってもFor文を抜けてしま...
-
VBAでBook読み込み時の非表示方...
-
順番に処理させたい
-
途中で処理を中断させたい (ア...
-
IF文に時間(何時から何時ま...
-
ExcelのVBAで、選択したファイ...
-
For ~ Next文
-
“try/catch”と“if/else”
-
クエリならできるのにVBAだとエ...
-
【VBA】エラー処理で別プロシー...
-
VBAの進捗状況をリアルタイ...
-
特定の名前のオートシェイプの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
vbaのエラー対応(実行時エラー...
-
シグナル 6(SIGABRT)とは?
-
どう増強すべきか
-
private subモジュールを他のモ...
-
IF文に時間(何時から何時ま...
-
特定の名前のオートシェイプの...
-
Excel VBA セルの名前があるか...
-
マクロで、次のコードへ行く前...
-
ExcelのVBAで、選択したファイ...
-
特定のファイルを他のプロセス...
-
VB6にてネットワーク上にある共...
-
どうやってもFor文を抜けてしま...
-
Word VBA。各マクロの間に待ち...
-
エクセル VBAで複数セル選択時...
-
【VBA】エラー処理で別プロシー...
-
フォルダのアクセス権確認について
-
VBA For Each 〜 複数条件について
-
StatusStripの表示が更新されな...
-
【C#】Page_Loadさせない方法に...
おすすめ情報