ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュのマクロで関数を値として違うシートに貼り付け

  • mixiチェック
  • このエントリーをはてなブックマークに追加
バージョン:WindowsXP Excel2003


はじめまして。エクセルのマクロに関する質問です。


納品書をエクセルで作成しました。
シート1に納品書、シート3に売上帳があり、シート名も”納品書”、”売上帳”
としています。
納品書に入力した際に、自動的に売上帳に入るよう、コードを作成しました。
その際、納品書をオートフィルターをかけて、空白以外をコピーできるよう作成しております。
下記のコードの補足としまして、納品書の伝票入力欄の表の行に”商品No.”や”商品名”などの名前をつけております。
納品書の”商品名”や”入数”はVLOOKUP関数を用いてるので、
下記のコードだと売上帳にもそのままの関数が入ってしまいます。


納品の品数によって、貼り付けたい行数が変わりセルが固定ではないので、インターネットで色々調べてみたのですが、うまくいきませんでした。
そこで質問なんですが、下記のコードをアレンジして、売上帳のシートの指定の列の空白欄に、値として貼り付ける方法を教えていただきたいです。
よろしくお願い致します。



Sub オートフィルター2()
'
' オートフィルター2 Macro
'


'


ActiveSheet.Range("$A$12:$I$25").AutoFilter Field:=2, Criteria1:="<>"
Range("商品No.").Copy Destination:=Worksheets("売上帳").Range("E" & Rows.Count).End(xlUp).Offset(1)
Range("商品名").Copy Destination:=Worksheets("売上帳").Range("F" & Rows.Count).End(xlUp).Offset(1)
Range("入数").Copy Destination:=Worksheets("売上帳").Range("G" & Rows.Count).End(xlUp).Offset(1)
Range("個数").Copy Destination:=Worksheets("売上帳").Range("H" & Rows.Count).End(xlUp).Offset(1)
Range("総数量").Copy Destination:=Worksheets("売上帳").Range("I" & Rows.Count).End(xlUp).Offset(1)
Range("単価").Copy Destination:=Worksheets("売上帳").Range("J" & Rows.Count).End(xlUp).Offset(1)
Range("金額").Copy Destination:=Worksheets("売上帳").Range("K" & Rows.Count).End(xlUp).Offset(1)
End Sub

コメント(9)

値の貼り付けをしたいのであれば
PasteSpecialメソッドを使った方が良いと思いますよ
もっと根本的に書きなおしたほうが簡単な気もしますが、提示されたコードを手直しするのであれば PasteSpecialメソッド を使うといいと思います。

http://www.officepro.jp/excelvba/cell_edit/index7.html
フィルタ後のコピー元範囲をSpecialCellsプロパティで可視セルのみの
データをクリップボードにCopyして、
PasteSpecialメソッドで値のみ貼り付ければ出来そうですね。
ご意見ありがとうございます。
マクロよくわからないのですが、上のコードは何とかやりたい事ができたので、
お恥ずかしい話いまいち意味がわからないまま使っております。
PasteSpecialメゾット、調べてみます。
ありがとうございました。
意味がわからないまま使っていると、使っているうちに
メンテナンス等で困ることが出てくる可能性が大きい
と思いますので、調べて理解した方が良いと思いますよ
キーボードやマウスの操作にすれば、値のみを貼り付け動作は、だれにも簡単に出来ると思います。その操作だけをマクロに記録すれば、操作とコードの関連付けがより理解できると思います。
マリ男さん
はい。一応調べて自分なりには、なんとなくは頭に入れてます。

八神さん
マクロの記録でやってみます。
ありがとうございました。
あ、Copyメソッドでは、オートフィルタでの非表示セルはちゃんと除外して
処理してくれるんですね。
>>3ではオートフィルタをかけずに普通にセルを非表示に設定した状態で
実験したため、非表示セルを手動で除外する必要があると思って余計な事を
書いてましたね。失礼しましたm(__)m

Minonさん
ご丁寧にありがとうございます。
PasteSpecialメソッドがんばって、マスターします。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。