
エクセルでOLEObjectを削除するコードを、
ブレークポイントを設置して実行すると、
デバッグモードでやると「中断モードでは入力できません」となります。
(エクセル2007です)
例えば、
Sub オブジェクト削除()
ActiveSheet.OLEObjects.Delete
Selection.Value = "a"
End Sub
で、「Selection.Value = "a"」の部分にブレークポイントを設置して、
F8で一行ずつ実行していこうとすると画像のようになります。
なぜなのでしょうか?
今サンプルで提示したコードは短いのでいいのですが
実際のコードはもっと長いので、
ステップインでコードの動きを見ていきたいのですが
ActiveSheet.OLEObjects.Delete
の部分で、エラーになってしまいます。
その際、「継続」と「終了」のどちらを選んでもOLEObjectsは削除されます。
「終了」の場合はその次のコードの、
Selection.Value = "a"
は実行されません。
ブレークポイントを設置せず、F5で一気に実行する場合はエラーになりません。
コードの中に、
ActiveSheet.OLEObjects.Delete
があってもステップインで実行しても中断させない方法を教えてください。

No.2ベストアンサー
- 回答日時:
OLEObject というのは、Excel外のオブジェクトで、Excelと関係が結ばれているのを、切るのですから、その切れる過程をみることはできません。
あくまでも、これは実務上のことですが、実際に、私もマクロ作成中に、そういうことに出会います。
役に立たない知識かもしれませんが、私の不確かな記憶ですが、OLEObjectの削除の場合、一瞬、マクロの実行が途切れて、その時にオブジェクトが削除されるはずです。だから、その削除前で止めるのは可能でも、事後で止めるというのは、マクロとして成り立たないことになる、というような解釈をしていました。
私は、そういう時、コードの進展をみるために、その部分に以下のようなダミーを置いて、実行後の様子をみます。
例:
Sub オブジェクト削除()
MsgBox "ActiveSheet.OLEObjects.Delete"
Stop 'ブレークポイントの代わり(恒久的)
End Sub
なお、Excelでは、Select したものを、橋渡しして処理する時に、Selection は使われますが、Rangeオブジェクトなど、明示的に使うことが多いので、Excel VBAでは、特殊な裏ワザ的なコードにしか使われません。逆に言うと、Excelでは、"Select" するということは、シートオブジェクト以外では、あまり使いません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エラー処理 3 2022/04/11 14:58
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/10 14:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/02/02 09:25
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/10 11:34
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/03/28 14:52
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
テキストボックス中の文字列の...
-
実行時エラー 3265「要求された...
-
Excelでフィルタをかけると警告...
-
エクセルのVBAの標準モジュール...
-
ASP レコードセットしたオブジ...
-
VBAで Set wb = Sheets(1).Cop...
-
VBAで既に開いている別アプリケ...
-
EXCEL VBA オートシェイプナン...
-
エクセルVBAで配列内に空白デー...
-
VBScriptからDLL参照設定したい
-
[VBA]CDOメッセージ送信エラー
-
Excel VBAでWordの複数ファイル...
-
CreateObjectとGetObjectの違い
-
ExcelVBAでのNZ関数について
-
Excel2007 VBA ラジオボタン Ca...
-
VBAについてです。 初心者です...
-
VBで引数にDictionaryオブジェ...
-
VBAからPDFファイルにパスワー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
実行時エラー 3265「要求された...
-
エクセルのVBAの標準モジュール...
-
Excelでフィルタをかけると警告...
-
VBAで既に開いている別アプリケ...
-
テキストボックス中の文字列の...
-
EXCEL VBA オートシェイプナン...
-
VBAで Set wb = Sheets(1).Cop...
-
ExcelVBAでのNZ関数について
-
[VBA]CDOメッセージ送信エラー
-
VBAからPDFファイルにパスワー...
-
エクセルVBAでcode128のバー...
-
VBScriptからDLL参照設定したい
-
VBAについてです。 初心者です...
-
エクセルマクロエラー「'Cells'...
-
オブジェクトが見つかりません
-
エクセルVBAで配列内に空白デー...
-
Excel VBAでWordの複数ファイル...
-
VBScriptでファイルの日時順(降...
おすすめ情報