次の方法で共有

Excel2013 環境によってマクロの実行中に「Excelに問題が発生しました」というエラーになる

Anonymous
2014-05-20T06:17:06+00:00

下村と申します。

Excelで分からないことがあり、質問させていただきたいと思います。

Excel 2013で、VBAのマクロを利用して帳票を作成しています。

以下の環境で実行すると、マクロの実行中に「Excelに問題が発生しました」というエラーになって

終了してしまいます。

 エラーになる環境

  Windows 7 32ビット

  Excel 2013 (インストールのタイプはクイック実行) バージョン:15.0.4615.1001

同じものを別の環境で実行するとエラーにはならず、正常に動作します。

 正常動作する環境

  Windows 8.1 Pro 64ビット

  Excel 2013 (インストールのタイプはMSI) バージョン:15.0.4615.1000

  (因みに、Excel2003、2007、2010で実行してもエラーにはなりません)

マクロの中にメッセージボックスを埋め込んで調べたところ、オブジェクトの名前を変更している

ところでエラーになっていることがわかりました。

また、エラー箇所を特定するためにオブジェクトの名前を変更する前後にメッセージボックスを入れて

実行するとエラーにはならず、メッセージボックスを入れずに実行するとエラーになります。

実際のコードは以下のようなものです。

(前略 変数宣言などはしています。)

MsgBox "1"

    For iCnt = 1 To Page_Count 

MsgBox "1-" & iCnt

        Sheets(Image_sheet & "_" & iCnt).Select

        For Each sShape In Sheets(Image_sheet & "_" & iCnt).Shapes

            If Mid$(sShape.Name, 1, 4) = "Oval" Then

                idx = idx + 1

                sShape.Select

                Selection.Name = "Oval " & CStr(idx)

MsgBox Selection.Name

                Selection.ShapeRange.Line.Visible = msoFalse

            End If

        Next

    Next iCnt

MsgBox "2"

(後略)

やっていることは、複数のシートに存在するオブジェクトの名前を、「Oval」とつくもの

について1から振り直しているのですが、「MsgBox Selection.Name」があれば

正常に動作しますが、この行をなくすとエラーになります。

前述したように同じExcel2013であってもエラーになる環境、ならない環境があり

手詰まり状態です。

なにかアドバイスを頂ければ幸いです。

※モデレーター注 : タイトルを編集させていただきました。

編集前タイトル : Excel2013 環境によってエラーが発生する

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2014-05-20T08:25:26+00:00

>について1から振り直しているのですが、「MsgBox Selection.Name」があれば

一度止めると正常っていうのは、タイミングの問題なんで、厄介ですね。こういうケースはこうやれば絶対というのはないんですが・・・・・・

おまじないみたいなものなんですが、

 Selection.Name = "Oval " & CStr(idx)

の次の行に DoEvents を入れて見てください。

(場合によっては二つ)

ただ、このトラブルには直接は関係ないんですが、名前を変更した際、既存の名前と重複する可能性があるような気がしますが、発生しない保証はあるのでしょうか?

(この場合はExcelの異常終了にはならず、オブジェクト重複と言ったエラーで止まります)

この回答は役に立ちましたか?

0 件のコメント コメントはありません

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2014-05-20T08:59:05+00:00

    下村です。

    早速のご回答ありがとうございます。

    教えていただいた「DoEvents」を試したところ

    正常に動作するようになりました。

    ありがとうございます。

    「DoEvents」は以前も何かのトラブルの時に

    試したのですが、その時は改善しなかった

    記憶があります。

    (確か、VBAでプレビューまでするようなコードを

    記入しているのに、1回クリックしないとプレビュー

    まで到達しない障害だったような・・・)

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません