Excel VBA質問箱 IV

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

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


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

【9208】クリップボードのデータをクリアしたいのですが 若葉マークのPC運転手 03/11/23(日) 11:05 質問
【9209】Re:クリップボードのデータをクリアしたいの... NH 03/11/23(日) 13:54 回答
【9218】Re:クリップボードのデータをクリアしたいの... 若葉マークのPC運転手 03/11/24(月) 11:41 お礼
【9227】Re:クリップボードのデータをクリアしたいの... INA 03/11/25(火) 9:02 回答
【9249】Re:クリップボードのデータをクリアしたいの... 若葉マークのPC運転手 03/11/25(火) 21:52 お礼
【9250】Re:クリップボードのデータをクリアしたいの... 若葉マークのPC運転手 03/11/25(火) 22:16 お礼
【9259】Re:クリップボードのデータをクリアしたいの... INA 03/11/26(水) 7:40 回答
【9266】Re:クリップボードのデータをクリアしたいの... よろずや 03/11/26(水) 13:06 発言
【9330】Re:クリップボードのデータをクリアしたいの... 若葉マークのPC運転手 03/11/28(金) 22:17 お礼
【9331】Re:クリップボードのデータをクリアしたいの... INA 03/11/29(土) 9:52 回答
【9332】Re:クリップボードのデータをクリアしたいの... 若葉マークのPC運転手 03/11/29(土) 14:41 お礼

【9208】クリップボードのデータをクリアしたいの...
質問  若葉マークのPC運転手  - 03/11/23(日) 11:05 -

引用なし
パスワード
    ループ処理でコピー、貼り付けを繰り返すと、クリップボードが一杯になって止まってしまいます。
コピーする回数を制限すると最後まで処理をするので、基本的な流れは正しくできていると思うのですが。
 貼り付け処理の際に自動的にクリップボードをクリアするオプションスイッチか、ループの前にクリアする方法教えていただけないでしょうか?

 Range("a1:d10").Select
   Application.CutCopyMode = False
   Selection.Copy
 Range("f1").PasteSpecial Paste:=xlPasteValues

【9209】Re:クリップボードのデータをクリアしたい...
回答  NH  - 03/11/23(日) 13:54 -

引用なし
パスワード
   ▼若葉マークのPC運転手 さん:

どこで教えていただいたものか不明ですが。
クリップボードの中身を消すなら


Option Explicit
'クリップボードをオープン
Declare Function OpenClipboard Lib "User32" (ByVal hwnd As Long) As _
  Long
'クリップボードを空にし、クリップボード内のデータのハンドルを解放
Declare Function EmptyClipboard Lib "User32" () As Long
'クリップボードをクローズ
Declare Function CloseClipboard Lib "User32" () As Long

'クリップボードクリア関数呼び出し
'別にこれを呼び出さなくても直接
'CLR_ClipBoard "" でかまいません

Sub ClipCLR()
    CLR_ClipBoard ""
End Sub


Function CLR_ClipBoard(myString As String)
Dim ret As Long

'クリップボードオープン
If OpenClipboard(0&) = 0 Then
    GoTo ERR1
End If

'クリップボードクリア
ret = EmptyClipboard()

'クリップボードクローズ
If CloseClipboard() = 0 Then
    GoTo ERR2
End If

Exit Function


ERR1:
  MsgBox "クリップボードが開けません(エラー)"
  Exit Function
ERR2:
  MsgBox "クリップボードが閉じれません(エラー)"
  Exit Function

End Function

【9218】Re:クリップボードのデータをクリアしたい...
お礼  若葉マークのPC運転手  - 03/11/24(月) 11:41 -

引用なし
パスワード
   ▼NH さん:
 たいへんありがとうございました。ご親切に感謝します。
 こうした投稿は初めての経験でして、まる二日解説書を読みながら悩んだ結果、藁をもつかむ思いで質問の投稿を決意しました。
 Functionの宣言はよく分かりませんが、流れは理解できたつもりです。(少し怪しいかな!)。
早速、私のマクロに組み込んでみましたら、これまでクリップボードが貯まってストップしていた作業が、最後までうまく終了し、しかもツールメニューで確認したところクリップボードは空でした。
 すぐに丁寧な回答をくださる方がいらっしゃることを知り、これからもVBAに挑戦していく勇気が湧いてきました。
 ほんとうに、ありがとうございました。


>▼

【9227】Re:クリップボードのデータをクリアしたい...
回答  INA  - 03/11/25(火) 9:02 -

引用なし
パスワード
   > Range("f1").PasteSpecial Paste:=xlPasteValues
値のコピーだけであれば、レイアウトによっては、
COPYメソッドを使わなくても出来ると思いますが・・

【9249】Re:クリップボードのデータをクリアしたい...
お礼  若葉マークのPC運転手  - 03/11/25(火) 21:52 -

引用なし
パスワード
   ▼INA さん:
>> Range("f1").PasteSpecial Paste:=xlPasteValues
>値のコピーだけであれば、レイアウトによっては、
>COPYメソッドを使わなくても出来ると思いますが・・
 はい、そのようです。いろいろ調べる中でそのことが分かりました。クリップボードを経由しての作業という思い込み時間の浪費にしまいました。
でも、クリップボードをクリアするという技を知ったことは大きな財産になりました。

Range("F1:I10").Value = Range("A1:D10").Value

 セル範囲選択や、その受け渡しを言葉からの想像だけでプログラミングしようとしていて、命令の具体的な動きが分かっていないと反省しました。
上記の指定にしても本当はよく分かっていません。
Range("F1").Value = Range("A1:D10").Value
ではなぜいけないのか、よく理解し切れていないのです。
F1 を左上炭にして A1:D10 を貼り付けることにはなりませんね。
 ようやくロードに出たばかりです。これから経験を積み、高速道路を走れる運転手になりたいと思います。
ありがとうございました。

【9250】Re:クリップボードのデータをクリアしたい...
お礼  若葉マークのPC運転手  - 03/11/25(火) 22:16 -

引用なし
パスワード
    追伸。
 実は、今回の作業は、Book1のAAAしーとから、Book2のBBBシートに部分複写するもので、その際、Copy, Paste をするブック、シートをその都度アクティブにする必要があるという思い込みをしていました。
ですので、クリップボード経由が必然という考えをしていました。
まだ、公道に出るのは早いですね。

【9259】Re:クリップボードのデータをクリアしたい...
回答  INA  - 03/11/26(水) 7:40 -

引用なし
パスワード
   PasteSpecial を使う必要がないときは
COPYメソッドの引数Destination(貼付先)を指定すれば、
クリップボードを経由しないです。

WorkBooks("Book1.xls").Worksheets("AAA").Range("A1").Copy _
Destionation:=WorkBooks("Book2.xls").Worksheets("BBB").Range("A1")

【9266】Re:クリップボードのデータをクリアしたい...
発言  よろずや  - 03/11/26(水) 13:06 -

引用なし
パスワード
   ▼INA さん:
>PasteSpecial を使う必要がないときは
>COPYメソッドの引数Destination(貼付先)を指定すれば、
>クリップボードを経由しないです。
>
>WorkBooks("Book1.xls").Worksheets("AAA").Range("A1").Copy _
>Destionation:=WorkBooks("Book2.xls").Worksheets("BBB").Range("A1")

実は、裏でクリップボードを使ってたり...
そんな記事を見たことがあります。
どうなんでしょうね。

【9330】Re:クリップボードのデータをクリアしたい...
お礼  若葉マークのPC運転手  - 03/11/28(金) 22:17 -

引用なし
パスワード
   ▼INA さん:
ありがとうぼざいます。
>
>WorkBooks("Book1.xls").Worksheets("AAA").Range("A1").Copy _
>Destionation:=WorkBooks("Book2.xls").Worksheets("BBB").Range("A1")

 実際にしてみました。この場合は、数式や書式も一緒にコピーされるのですね。
勉強になりました。

【9331】Re:クリップボードのデータをクリアしたい...
回答  INA  - 03/11/29(土) 9:52 -

引用なし
パスワード
   > 実際にしてみました。この場合は、数式や書式も一緒にコピーされるのですね。
>勉強になりました。

値のみであれば、複数のセルの値を Value で取得して、
「配列」に格納して、再びセルに展開するのも、良いかもしてません。

【9332】Re:クリップボードのデータをクリアしたい...
お礼  若葉マークのPC運転手  - 03/11/29(土) 14:41 -

引用なし
パスワード
   ▼INA さん:
ありがとうございます。
>値のみであれば、複数のセルの値を Value で取得して、
>「配列」に格納して、再びセルに展開するのも、良いかもしてません。

 なるほど、そういう手もありますね。
いろいろな方法を知っていれば、その中から適宜選択してプログラムの流れを組めますね。

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