Excel VBA質問箱 IV

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

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


3921 / 13645 ツリー ←次へ | 前へ→

【59458】張り込まれた跡「青色」をなくしたい tanpopo 08/12/11(木) 20:01 質問[未読]
【59460】Re:張り込まれた跡「青色」をなくしたい にぃ 08/12/12(金) 9:37 回答[未読]
【59461】Re:張り込まれた跡「青色」をなくしたい Abebobo 08/12/12(金) 10:03 発言[未読]
【59482】Re:張り込まれた跡「青色」をなくしたい tanpopo 08/12/12(金) 22:04 お礼[未読]

【59458】張り込まれた跡「青色」をなくしたい
質問  tanpopo  - 08/12/11(木) 20:01 -

引用なし
パスワード
   ブックAAWとブックBBがアクティブな状態です。
AAWブックのシート「残高表W」をBBブックの「残高表」に貼り付け
AAWブックのシート「総括表W」をBBブックの「総括表」に貼り付けています。
ただ貼り付けられたエリアが「青色」で残るものですから
それぞれのシートのA1を選択したく、最下行3行を付け加えましたが
エラーになります。
コードのミスと思いますが、どのように直せばよいのでしょうか?
アドバイスお願いします。
(また、もっとシンプルなコードの書き方がありましたらアドバイスお願い
します)

Windows("AAW.xls").Activate  
  With Sheets("残高表W")
   .Range("C6:J222").Copy
  End With
Windows("BB.xls").Activate
  With Sheets("残高表")
   ActiveSheet.Paste .Range("C6")
    With .Range("C6:J220")
     .Copy
     .PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
      False, Transpose:=False
    End With
  End With

Windows("AAW.xls").Activate
  With Sheets("総括表W")
  .Range("B6:J34").Copy
  End With
Windows("BB.xls").Activate
  With Sheets("総括表")
   ActiveSheet.Paste .Range("B6")
    With .Range("B6:J34")
     .Copy
     .PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
      False, Transpose:=False
    End With
  End With
 
 'With Sheets(Array("残高表", "総括表")).Range("A1")
 '   .Select
 'End With
ActiveWorkbook.Save

【59460】Re:張り込まれた跡「青色」をなくしたい
回答  にぃ  - 08/12/12(金) 9:37 -

引用なし
パスワード
   ▼tanpopo さん:
こんにちは!

まず質問内容としては
> 'With Sheets(Array("残高表", "総括表")).Range("A1")
> '   .Select
> 'End With
の部分をこちらに変えてください。

Application.CutCopyMode = False
  
  Dim Ws As Worksheet
  
  For Each Ws In Sheets(Array("残高表", "総括表"))
    Ws.Activate
    Ws.Range("A1").Select
  Next

できたらDim文は先頭に記載していただけると助かります。

意味としてはシートは複数Select出来てもRangeは複数Select出来ませんので
一つ一つ指定してあげる必要があります。


>Windows("AAW.xls").Activate  
>  With Sheets("残高表W")
>   .Range("C6:J222").Copy
>  End With
こちらの4行ですが、Withの意味があまりないような気がします。
Withを多様したければ下記のようなほうがわかりやすいでしょう。

With Workbooks("AAW.xls")
  .Activate
  .Sheets("残高表W").Range("C6:J222").Copy
End With


またこの構文ですが、.Range("C6:J220")をコピーして同じ場所にペースト
してませんか?
これで問題なければいいのですが、少し気になったもので。
>    With .Range("C6:J220")
>     .Copy
>     .PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
>      False, Transpose:=False
>    End With

【59461】Re:張り込まれた跡「青色」をなくしたい
発言  Abebobo  - 08/12/12(金) 10:03 -

引用なし
パスワード
   tanpopoさん にぃさん おはようございます
にぃさん からすでにコメントありますが、書いちゃったので
投稿します。


>> 'With Sheets(Array("残高表", "総括表")).Range("A1")
>> '   .Select
>> 'End With

 Sheets(Array("残高表", "総括表")).Select
 Sheets("残高表").Activate
 Range("A1").Select

マクロの記録では、上記の感じです。

tanpopoさんのコードの上半分

Dim BB_Z As Worksheet

Set BB_Z = Workbooks("BB.xls").Sheets("残高表")

Windows("AAW.xls").Activate
  With Sheets("残高表W")
   .Range("C6:J222").Copy BB_Z.Range("C6")
  End With

  With BB_Z.Range("C6:J220")
   .Value = .Value
  End With

このようにまとめれます。
* 確認 コピペした範囲の値だけを貼り付けたいのですよね?

このまとめたコードなら、その3行のコードは必要なくなります。

【59482】Re:張り込まれた跡「青色」をなくしたい
お礼  tanpopo  - 08/12/12(金) 22:04 -

引用なし
パスワード
   ▼にぃ さん Abebobo さん:

今晩は。
アドバイス有難うございました。
勉強になりました。
実作業に活かせて嬉しいです。
これからもよろしくご指導お願いします。

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