人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ExcelやAccess等のVBAのMacro内で、コピー&ペーストの処理が含まれているとします。そのマクロの実行中、別のアプリケーションで手作業によるコピー&ペーストをしたり、また別のアプリケーションのMacroがコピー&ペーストを実行した場合、それぞれのコピー&ペースト間でデータがまぎれてしまうといったことは起こりうるでしょうか?

●質問者: zkq
●カテゴリ:コンピュータ
✍キーワード:access Excel VBA アプリケーション コピー
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Mook
●60ポイント

連続した処理で、コピーとペーストの間が短ければあまり起きないとは思いますが、

クリップボードはWindows 全体の共有資源ですから、可能性はありそうです。

下記のように実験してみたところ無理やりその現象を起こすことはできました。

Sub CopyAndPaste()
 Range("A1").Copy
 MsgBox "Hello"
 Range("A6").Select
 ActiveSheet.Paste
End Sub

でメッセージボックス表示中に他のアプリケーションでコピーを実行すると、その内容が A6

に入ります。


そのようなことを防止するためには、

Sub CopyAndPaste()
 Range("A6").Value = Range("A1").Value
End Sub

Sub CopyAndPaste()
 Range("A1").Copy Destination:=Range("A6")
End Sub

のように一回の処理でコピーが完了するように VBA 側での工夫も必要でしょう。

コピー & ペーストは VBA の処理の中では時間のかかる方法ですから、可能であれば

代入などに置き換えたほうがよいと思います。


逆にクリップボードを使用したいという局面もあるかと思いますが、その際は下記が参考に

なるかと思います。

http://officetanaka.net/excel/vba/tips/tips20.htm

◎質問者からの返答

やっぱりそうですね。ありがとうございました

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ