次の方法で共有

EXCEL マクロがプログラムの通りに行かない

Anonymous
2017-08-15T05:14:09+00:00

2017年4月位からEXCELのマクロで処理した結果がおかしくなっているようになって来ました。

それ以前は何の問題もなくスムーズに行きましたが。

原因を探ってみると下記のカラム(列)を挿入するプログラムに問題がありそうです。

(例)

    Columns("C:C").Select

    Selection.Insert Shift:=xlToRight

マクロ処理すると列挿入を行うはずが、勝手にコピーペーストになってしまい、処理結果が全く違うものになってしまいます。

つまり、プログラム処理を続けている途中、上記のプログラム処理になると処理結果がおかしくなるのです。

現在、対応として 

Columns("C:C").Select

Selection.Insert Shift:=xlToRight

の前にEnd Subをおいて処理を止め、

次の処理名を置く事で

Columns("C:C").Select

Selection.Insert Shift:=xlToRight

が上手く機能します。

何故、おかしくなるのか原因と対応を教えていただきたくお願いします。

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

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

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

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

Makapu 92,110 評価のポイント ボランティア モデレーター
2017-08-15T07:30:57+00:00

こんにちは。

Japan Office Developer Support Blog に該当すると思われる記事が載っていましたのでご確認下さい。

◆ バージョン 1705 以降の Excel 2016 でコピー範囲が保持されるようになった動作のプログラムへの影響

https://blogs.msdn.microsoft.com/office_client_development_support_blog/2017/07/31/excel-ver1705-copykeep/

>クイック実行版の Excel 2016 バージョン 1705 (16.0.8067.xxxx) で、Excel のセル範囲をコピーした後、他の操作を行っても、コピー範囲が解除されないように変更されました。

回避方法

以前の動作と同等の動作としたい場合は、Application.CutCopyMode プロパティを使用してコピー範囲をリセットしてから Insert 関数を呼び出します。

Application.CutCopyMode = False '回避コード

Columns("C:C").Select

Selection.Insert Shift:=xlToRight

また、VBAについては経験豊富な開発の方が多く利用されるMsdnフォーラムがありますので、そちらをご利用になると良いと思いますよ。

■ Msdnフォーラム - VBA

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

3 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2017-08-16T01:44:46+00:00

    Makapuさん

    ご親切に回答して頂き、有難うございました。

    回避コードを追加したところ、上手くできました。

    このトラブルについてネットで色々と調べてみましたが、見つからず途方にくれていました。

    本当に助かりました。

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

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