Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5886 / 13646 ツリー ←次へ | 前へ→

【47971】マクロ実行中のクリップボード制限 VBA初心者 07/3/28(水) 15:46 質問[未読]
【47972】Re:マクロ実行中のクリップボード制限 マクロマン 07/3/28(水) 17:33 発言[未読]
【47988】Re:マクロ実行中のクリップボード制限 VBA初心者 07/3/29(木) 13:30 質問[未読]
【48355】Re:マクロ実行中のクリップボード制限 マクロマン 07/4/13(金) 21:05 発言[未読]
【48393】Re:マクロ実行中のクリップボード制限 VBA初心者 07/4/16(月) 9:48 お礼[未読]
【48360】Re:マクロ実行中のクリップボード制限 uchan 07/4/13(金) 23:24 発言[未読]

【47971】マクロ実行中のクリップボード制限
質問  VBA初心者  - 07/3/28(水) 15:46 -

引用なし
パスワード
   初歩的な質問ですいません。

マクロ実行中にクリップボードがまったく使用できない状態に
なるのですが、
これは、メインの処理でクリップボードを経由する処理が
実行されているためなのでしょうか?

処理時間がとても長くなるマクロを実行しているので
できればクリップボードを使用できるように改造したいと
思うのですが、クリップボードを使用している箇所を簡単に
抽出・洗い出すことは可能でしょうか?

(クリップボードを無条件で解放したりすると
マクロの処理自体が保障できなくなりますよね。。。)

いいお知恵があれば是非教えてください。
よろしくお願いします。

【47972】Re:マクロ実行中のクリップボード制限
発言  マクロマン  - 07/3/28(水) 17:33 -

引用なし
パスワード
   コードを見てみないとなんとも・・・。

【47988】Re:マクロ実行中のクリップボード制限
質問  VBA初心者  - 07/3/29(木) 13:30 -

引用なし
パスワード
   >コードを見てみないとなんとも・・・。

情報が少なすぎてすみません。
大量のシート上のデータに対して以下のようなループ処理を
実行していて、ループ内の★部分でシート上でCut処理を
実施しています。
記述の仕方的にはクリップボードを経由しないで直接切り取って
貼り付けているつもりなのですが、
このループ処理を実施している間、Editor等でクリップボードが使えたり
使えなかったりして、安定しません。
下記★の処理を削除するとループ処理中も問題なくCut&Pasteが
他のEditor等でも使用できます。
クリップボードの使用を競合しないように実装する方法が
ありましたら教えていただけないでしょうか?

Do While (1)
  If Worksheets(main_sheet_name).Range("B" & main_row_no) = Empty Then
    '比較元が""の場合は処理終了
    Exit Do
  End If
  
  〜処理1〜
  
  ★コピー処理
  Worksheets(chk_to_sheet).Range("XX:YY).Cut Destination:=Worksheets(chk_frm_sheet).Range(strtoClm & main_row_no)  
  
  〜処理2〜
  main_row_no = main_row_no + 1
Loop

【48355】Re:マクロ実行中のクリップボード制限
発言  マクロマン  - 07/4/13(金) 21:05 -

引用なし
パスワード
   もう見てないかな?

>★コピー処理
>Worksheets(chk_to_sheet).Range("XX:YY).Cut Destination:=Worksheets(chk_frm_sheet).Range(strtoClm & main_row_no)

↓にしたらどうなりますか?

With Worksheets(chk_to_sheet).Range("XX:YY)
 Worksheets(chk_frm_sheet).Range(strtoClm & main_row_no).Resize(.Rows.Count, .Columns.Count).Value = _
.Value
End With

【48360】Re:マクロ実行中のクリップボード制限
発言  uchan  - 07/4/13(金) 23:24 -

引用なし
パスワード
   ▼VBA初心者 さん:
>初歩的な質問ですいません。
>
>マクロ実行中にクリップボードがまったく使用できない状態に
>なるのですが、
>これは、メインの処理でクリップボードを経由する処理が
>実行されているためなのでしょうか?
>
そもそもカット&ペーストでなければならないのでしょうか?
クリップボードを使用しないで直接セルに値をコピーするほうが
データの信頼性も保障されるのでは?

【48393】Re:マクロ実行中のクリップボード制限
お礼  VBA初心者  - 07/4/16(月) 9:48 -

引用なし
パスワード
   >↓にしたらどうなりますか?
> With Worksheets(chk_to_sheet).Range("XX:YY)
> Worksheets(chk_frm_sheet).Range(strtoClm & main_row_no).Resize(.Rows.Count, .Columns.Count).Value = _
> .Value
> End With

マクロマン さん
Resizeを使った方法は知りませんでした。
上記の記述に変更してやってみたら、
クリップボードを占有せずにコピー処理を実行できました。
初歩的な質問ですいませんでした。
お忙しい中、本当にありがとうございました。

5886 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free