• ベストアンサー

OLEObjects ステップイン 削除できない

シート上のOLEObjectsを削除するべく、 ActiveSheet.OLEObjects.Delete と言うコードをステップインで実行しようとすると、 「中断モードでは入力できません」 となりますが、OLEObjectsは削除されます。 結局は削除されるからいいのですが、 ステップインで実行していきたい時は、どうすればいいのでしょうか? そもそもなぜデバッグモードで、OLEObjectsの削除ができないのでしょうか? エクセル側に何か不都合があるのですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • sora1515
  • ベストアンサー率58% (54/92)
回答No.1

仕様上ステップ実行できないですね・・ 理由はわかりません。 回避策として、 Delete行をコメントにしておき他の処理についてデバッグする。最後に有効化する。 Addやcountも多用してて上記で支障が出る場合、ステップ実行はあきらめMsgboxやセルに値を表示させるデバッグ方式にする。またはVisibleやEnabledを利用する方式に変える。

syhjaxwmm
質問者

お礼

ありがとうございました。

関連するQ&A

  • ステップインで実行しても中断させない方法を教えてく

    エクセルで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 があってもステップインで実行しても中断させない方法を教えてください。

  • F8のステップインで実行するとエラーになるマクロ(オブジェクトの挿入)

    こんばんは。 また質問させてください。 エクセル2003です。 Sub 挿入_ラベル() ActiveSheet.OLEObjects.Add(ClassType:="Forms.Label.1").Select End Sub このコードをF8のステップインをしながら実行すると 「中断モードでは入力できません。」となります。 普通にF5の実行なら問題なくできます。 なぜF8だとエラーになるのでしょうか? オブジェクト関係だからですか?

  • シート上のすべての画像を削除するには?

    エクセルのシート上のすべての画像を削除するには? 図のようにヤフーのトップページをコピーしてエクセルに貼り付けました。 その際画像も一緒に張り付いてしまいますが、 その画像をすべて消すVBAコードを教えてください。 Sub シートの全てのハイパーリンクを削除する() ActiveSheet.Hyperlinks.Delete End Sub これで、ハイパーリンクは消えるので、画像バージョンが知りたいです。 よろしくお願いします。

  • VBA シートの名前が重複するときに すでにある方を削除する

    VBA シートの名前が重複するときに すでにある方を削除する よろしくお願いします。 エクセル2003を使っています。 「入力シート 」をコピーして「DB」という名前をつける。 すでに「DB]シートがあれば「DB」シートを削除する。 その時に、もし「集計」シートと「名簿」シートがあれば一緒に削除する というコードを考えています。 集計シートや名簿シートはない場合もありますので、最初からdeleteにするとエラーになります。 どうぞお知恵をお貸しください。 sub シートの挿入と削除 () Worksheets("入力シート").Activate ActiveSheet.Copy After:=ActiveSheet On Error Resume Next 'エラーが発生しても続行 ActiveSheet.Name = "DB" If Err.Number = 1004 Then Application.DisplayAlerts = False '警告メッセージを表示しない Sheets("DB").Delete Application.DisplayAlerts = True ActiveSheet.Name = "DB" End Sub End If

  • 【vba】フォームに書いてあるコードをステップインすることは不可能でしょうか?

    エクセルもアクセスも同じなんですが フォームのモジュール?に書いてあるコードを 「F8」のステップインすることは不可能でしょうか? 標準モジュールなら 「F8」で少しずつVBAコードを試すことが可能なのですが、 フォームに書いてあるほうはできません。 ひとつひとつ試したいので Private Sub コマンド1_Click() Call test End Sub とフォームのところに書き、 標準モジュールには Sub test() ・・・ End Sub と書いて 標準モジュールのほうを F8で少しずつデバッグしています。 こうするしかないのでしょうか? よろしくお願いします。

  • シート上のjpg画像のみを一括削除したい

    Excel VBA勉強中の者です。 早速ですが、シート上にあるjpg画像のみを一括削除したく ネットで調べつつ以下のコードを作ってみました Sub dlt() '既存の画像を削除 Dim jpgdlt As Shape With ActiveSheet .DrawingObjects.Delete 'このコードが違っている??? For Each jpgdlt In .Shapes ’For Each Next で選択対象を繰り返し削除 jpgdlt.Delete Next End With End Sub これでjpg画像の削除は出来たのですが、シート上に配置した コントロールなどのオブジェクトも全て削除されてしまい困っております。 以下のコードも作ってみたのですが、こちらはメモリーが不足しているという エラーを回避できず、オブジェクトが削除されるか検証する前に使用を断念しました。 Sub dlt() '既存の画像を削除 Dim jpgdlt As Object Set jpgdlt = ActiveSheet jpgdlt.Shapes.SelectAll Selection.Delete End Sub jpg画像のみを選択し、削除するにはどうすれば宜しいのでしょうか? 色々調べてはみたものの、自力での解決に至らず、 お手数お掛けしますがどなたかご助力お願い致します。

  • ワークシートの削除

    For SheetSakujo = 3 To SheetCount - 1 Worksheets(SheetSakujo).Select If ActiveSheet.Name <> "★" Then If Range("A2") = "" Then ActiveWindow.SelectedSheets.Delete End If ElseIf ActiveSheet.Name = "★" Then Exit For End If Next VBAでワークシートの削除を行っています。 A2が空白のシートを消そうと思って上記のようなコードをくみましたが、 削除されるとシートが減ってしまうため、次のシートも空白だった場合、消されないで飛ばされてしまいます。 3枚目のシート:空白 4枚目のシート:空白 5枚目のシート:空白     ↓ sheetsakujoが「3」なので3枚目は削除される。 次の4枚目のシートが3枚目が削除されたため、「3番目のシート」になるため、次に削除されるのは5枚目のシート。 この場合、どのようにしたらいいのでしょうか?

  • エクセルVBA コメントが削除できない

    エクセル2000です。 シート内のすべてのコメントを削除しようと以下のコードを走らせたところ、何番目かでエラーが起き、とまってしまいます。 シート保護は解除してあります。 コメントはすべて同じような書式なのでなぜ途中で止まるのかわかりません。ご教示いただければ幸いです。 Sub TEST() With ActiveSheet For i = 1 To .Comments.Count MsgBox i .Comments(i).Delete'ここでエラー Next i End With End Sub

  • OLEObjectsのフォントサイズを変更

    エクセルのシート上のOLEObjectsのフォントサイズを変更することはできますか? シート上にはコマンドボタンしかないので、フォントのサイズの変更は可能だと思いますが For Each o In ActiveSheet.OLEObjects o.Height = 15 o.Width = 30 o.FontSize = 9 Next こうすうと、実行時エラー438が発生します。 この項目は、手作業じゃないと設定できないのでしょうか?

  • 画面上に拡張メタファイルを逐一張り付けるコードを組んだのですが

    画面上に拡張メタファイルを逐一張り付けるコードを組んだのですが そのコード実行の前に、アクティブシート上の拡張メタファイルを 全て消去するつもりで下記のコードを組みました しかしながら、.MetaPropertiesではメソッドが見つかりませんとでてしまい これを削除して実行したところ、今度は.Deleteが上記同様 メソッドが見つかりませんと出てしまいます そもそも、拡張メタファイルを割り当てるコードがMetaPropertyかどうかも 分からない始末です どなたかお分かりの方教えて下さい Dim meta as MetaProperty Dim xlsheet as worksheet set xlsheet=ActiveSheet For Each meta In xlsheet.MetaProperties meta.Delete next set xlsheet=Nothing

専門家に質問してみよう