[[20180529151029]] 『[マクロ] 値で貼り付け』(あたい) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『[マクロ] 値で貼り付け』(あたい)

コピーしたセルを値で貼り付ける場合について教えて下さい。
現在使用しているマクロは元の書式を維持したまま貼り付けになっています。


     Dim i As Long, cnt As Long

    Dim name As Object

    For Each name In Names
        If name.Visible = False Then
            name.Visible = True
        End If
    Next

     For i = 2 To Sheets("リスト(2)").Cells(Rows.Count, 1).End(xlUp).Row
         Sheets("一般管理費").Copy After:=Sheets(Worksheets.Count)
         cnt = Sheets.Count
         Sheets(cnt).name = Sheets("リスト(2)").Cells(i, 6).Value
         Sheets("リスト(2)").Cells(i, 2).Copy Sheets(cnt).Range("E8")
         Sheets("リスト(2)").Cells(i, 6).Copy Sheets(cnt).Range("F8")
         Sheets("リスト(2)").Cells(i, 4).Copy Sheets(cnt).Range("I8")


Range.PasteSpecialを使用して値で貼り付ける場合
例えば最初のE8の場合

元の
  Sheets("リスト(2)").Cells(i, 2).Copy Sheets(cnt).Range("E8")
のRangeのところへ追記

    Sheets("リスト(2)").Cells(i, 2).Copy Sheets(cnt).Range("E8").PasteSpecial Paste:=xlPasteValues, 
という書き方で良いのでしょうか。

出先でExcelが使用できない為、自分で検証していないのですが…。
考え方が違うのかどうかも含めて教えて頂けると幸いです。

宜しくお願いいたします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


一度自席に戻れたので試してみましたが、
記述エラー(赤字)になりました。
文法的におかしいんですね…。
どうしたらよいのかお知恵をお貸しいただきたく!!
(あたい) 2018/05/29(火) 15:45

 PasteSpecialにカーソルを置きF1キーを押してヘルプを確認してはどうか。
(ねむねむ) 2018/05/29(火) 15:54

>どうしたらよいのかお知恵をお貸しいただきたく!!
検索して見てください。
いつ回答が得られるかわからない掲示板より時間が短縮できるかも?

↓参考URL>>
http://officetanaka.net/excel/vba/cell/cell09.htm
https://kosapi.com/post-2851/
(まっつわん) 2018/05/29(火) 16:09


ねむねむ様

ヘルプの確認方法ありがとうございました。

まっつわん様

貼り付けて頂きましたタナカさんのところで無事解決しました!
検索はしていたのですが、検索のキーワードがへたくそだったのかもしれません。
お知恵をお借り出来て良かったです。

    Sheets("リスト(2)").Cells(i, 2).Copy Sheets(cnt).Range("E8").Value

でOKでした。

マクロってなかなか奥が深いですね。
ありがとうございました。
(あたい) 2018/05/29(火) 17:02


> Sheets("リスト(2)").Cells(i, 2).Copy Sheets(cnt).Range("E8").Value
>でOKでした。

解決したのは本当でしょうが、↑は間違えていませんか。

(マナ) 2018/05/29(火) 19:13


マナさん

するどいご指摘ありがとうございます。
なぜわかるのですか!ビックリです。

実は、1か所は解決したのですが、2か所は解決していません。
同じ式で3か所、値で貼り付けたかったのですが
1行目(E8)、2行目(F8)は、末尾に .valueだと何も貼り付けられなくなりました。
3行目(I8)は、値で張り付いた状態です。


     For i = 2 To Sheets("リスト(2)").Cells(Rows.Count, 1).End(xlUp).Row
         Sheets("一般管理費").Copy After:=Sheets(Worksheets.Count)
         cnt = Sheets.Count
         Sheets(cnt).name = Sheets("リスト(2)").Cells(i, 6).Value
         Sheets("リスト(2)").Cells(i, 2).Copy Sheets(cnt).Range("E8")
         Sheets("リスト(2)").Cells(i, 6).Copy Sheets(cnt).Range("F8")
         Sheets("リスト(2)").Cells(i, 4).Copy Sheets(cnt).Range("I8").Value


自力で解決出来るかといじっていたのですが、行き詰っています。

(あたい) 2018/05/30(水) 16:38


リンク先やヘルプでわかりませんでしたか?

 >Sheets("リスト(2)").Cells(i, 2).Copy Sheets(cnt).Range("E8").PasteSpecial Paste:=xlPasteValues, 
 >という書き方で良いのでしょうか。

1行でなく、2行にわけて記述してください。

 コピー元,Copy 
 貼り付け先.PasteSpecial Paste:=xlPasteValues

という構文です。

'----
または、

貼り付け先.Value = コピー元,Value

だと、1行です。
例えばこうです。

 Sheets(cnt).Range("E8"),Value = Sheets("リスト(2)").Cells(i, 2).Value
 Sheets(cnt).Range("F8"),Value = Sheets("リスト(2)").Cells(i, 6).Value
 Sheets(cnt).Range("I8"),Value = Sheets("リスト(2)").Cells(i, 4).Value

(マナ) 2018/05/30(水) 18:46


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.