こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセルマクロで隣のシートへ値貼付け

取引先コードを指定すると、
ワークシート1の表でオートフィルターにより該当する取引先を抽出し、
それを隣のワークシート2へ値貼り付けようとしますが、上手くできません。

通常の貼付けでは、計算式などがずれるため、値貼付けにしたいと思っています。

通常の貼り付けはうまくいくのですが、値貼付けをしようとすると、できません。
値貼付けの記述をどう改善すればいいでしょうか。

宜しくお願い致します。

(1)オートフィルターをコピー+通常の貼り付け
With Worksheets(1).Cells(3, 20)
.AutoFilter Field:=20, Criteria1:=当月取引先

.CurrentRegion.SpecialCells(xlVisible).Copy Worksheets(2).Cells(9, 1)
.AutoFilter
End With

(2)オートフィルターをコピー+値貼り付け
With Worksheets(1).Cells(3, 20)
.AutoFilter Field:=20, Criteria1:=当月取引先
.CurrentRegion.SpecialCells(xlVisible).Copy Worksheets(2).Cells(9, 1).pastespecial paste:=xlpastevalues
.AutoFilter
End With

投稿日時 - 2015-08-02 15:59:37

QNo.9023125

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

>通常の貼り付けはうまくいくのですが、値貼付けをしようとすると、できません。

まず。
オートフィルタで絞り込んでいる状態であれば、通常のコピー貼り付けで勝手に値だけが貼り付きます。
キチンとオートフィルタで絞り込まれている状態に持っていけてることを確認の上、あなたの上手くいく「コピー+通常の貼り付け」のマクロをご利用ください。それで問題なく値で貼り付いています。

sub macro1()
 dim 当月取引先 as variant
 当月取引先 = "てすと"

 worksheets("Sheet1").select
 range("A3").currentregion.autofilter field:=20, criteria1:=当月取引先
 activesheet.autofilter.range.copy destination:=worksheets("Sheet2").cells(9, 1)
 activesheet.autofiltermode = false
end sub



次に。
>.CurrentRegion.SpecialCells(xlVisible).Copy Worksheets(2).Cells(9, 1).pastespecial paste:=xlpastevalues

値貼り付けのツモリでデタラメに書き足しても、当然動きません。
新しいマクロの記録で「(可視セルの)セル範囲をコピー、次のシートに形式を選んで貼り付ける」をマクロに録って、正しいマクロの書き方の参考にしてみると良いでしょう。

投稿日時 - 2015-08-02 16:48:18

あなたにオススメの質問