ここから本文です

【至急】VBAでのシートからシートへの、特定範囲の計算結果の値のコピー

kiraria_addictさん

2014/2/2611:40:20

【至急】VBAでのシートからシートへの、特定範囲の計算結果の値のコピー

自分で調べてはいるのですが、分からず途方に暮れています。

あるシートのA10~A40、G10~40に計算結果の値(Aには日付、Gには労働時間)が入っています。
それを別シートのA列とB列にコピーしたいです。

VBAを始めたばかりで構文なども何パターンかある内どれを使えば一番いいのか分かりません。。
どうかお力添えお願いいたします。

補足お二方早々のご回答ありがとうございます。
おかげさまで希望の場所にペーストすることはできました。
そして次の問題なのですが・・・、
労働時間が8:30となっているセル(関数が入っていて表示形式はユーザー定義の日時)をコピーしたときに
コピー先のセル(表示形式数値、小数点第2まで)にペーストすると、標準値の0.4...というのが表示されてしまいます。

実際コピー先には8.5と表示したいです。

あくまでvbaで処理しなければならないようです。
このような書式の変換はどうすればよいのでしょうか。。?

どうぞよろしくお願いいたします。

閲覧数:
1,098
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

編集あり2014/2/2617:06:48

《補足の回答》
コピー元の書式設定が判らないですが、多分日付シリアル値でデータが計算されていて、それを書式で0:00型式に表示してあるものと想像します。それを時間数に変換したいのならば、
Worksheets("別シート").Range("A10:A40").Value = Worksheets("あるシート").Range("A10:A40").Value
Worksheets("別シート").Range("B10:B40").Value = Worksheets("あるシート").Range("G10:G40").Value
の後に、
Worksheets("Sheet2").Range("B1").Value = 24
Worksheets("Sheet2").Range("B1").Copy
Worksheets("Sheet2").Range("B10:B40").PasteSpecial _
Paste:=xlPasteValues, _
Operation:=xlPasteSpecialOperationMultiply
Worksheets("Sheet2").Range("B1").ClearContents
と入れればよいです。
(B1セルを作業用に使っています。もしこれが使えないなら、適当に他のセルを使って下さい。)
(ずいぶんまどろっこしい記述ですが、理解はしやすいと思います。)
やってることは、セル範囲の値に24を掛け算してます。
===========================
こんにちは。

例えばこういうことですか?

まるごとコピーしたいなら
Worksheets("あるシート").Range("A10:A40").Copy Destination:=Worksheets("別シート").Range("A10")
Worksheets("あるシート").Range("G10:G40").Copy Destination:=Worksheets("別シート").Range("B10")

値だけコピーするなら
Worksheets("別シート").Range("A10:A40").Value = Worksheets("あるシート").Range("A10:A40").Value
Worksheets("別シート").Range("B10:B40").Value = Worksheets("あるシート").Range("G10:G40").Value

値と数値書式をコピーするなら
Worksheets("あるシート").Range("A10:A40").Copy
Worksheets("別シート").Range("A10:A40").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Worksheets("あるシート").Range("G10:G40").Copy
Worksheets("別シート").Range("B10:B40").PasteSpecial Paste:=xlPasteValuesAndNumberFormats

元シートのセルが計算式ならば、まるごとコピーではその計算式をコピーしてしまうので、貼り付け後の計算式が正しい計算をするかどうかは保証しません。

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

編集あり2014/2/2616:35:40

>何パターンかある内どれを使えば一番いいのか分かりません。。
お好きなものでよいのでは?
初心者の方には、マクロの記録結果に手を入れるのがお勧め。
「形式を選択して貼付」の操作を使って、質問の内容をマクロ記録に録ると

Sheets("Sheet1").Select
Range("A10:A40,G10:G40").Select
Range("G10").Activate
Selection.Copy
Sheets("Sheet2").Select
Range("A10").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

Select・Selectionをひたすらくっつける作業を行うと、
Sheets("Sheet1").Range("A10:A40,G10:G40").Copy
Sheets("Sheet2").Range("A10").PasteSpecial Paste:=xlPasteAll, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False

不要な引数を削除して
Sheets("Sheet1").Range("A10:A40,G10:G40").Copy
Sheets("Sheet2").Range("A10").PasteSpecial Paste:=xlPasteAll

マクロ記録を録るときに、「形式を選択して貼付」の「値」を行えば、値だけになります。
《返信》
>書式の変換はどうすればよいのでしょうか。。?
手動で操作するときどのような操作をしますか?
①コピー元をコピー
②コピー先に書式だけ貼付
③さらに、値を貼付
で上手くいきませんか?
その操作を記録に録って、整形すると
Sheets("Sheet1").Range("A10:A40,G10:G40").Copy
Sheets("Sheet2").Range("A10").PasteSpecial Paste:=xlPasteFormats
Sheets("Sheet2").Range("A10").PasteSpecial Paste:=xlPasteValues

少し整理すると
Sheets("Sheet1").Range("A10:A40,G10:G40").Copy
With Sheets("Sheet2").Range("A10")
.PasteSpecial Paste:=xlPasteFormats
.PasteSpecial Paste:=xlPasteValues
End With

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

5文字以上入力してください

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。