[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数あるシートの各最終行にペースト』(北国)
シートが複数ありシート名に○○番とついているシートのみ
各シートのG2:J2のセルの値をコピーし、各々のB列の最終行に貼り付けしたいのです。
データが張られる場合は、B,D,E,Fと4つのデータが張られるようになります。
これをVBAで作成しようと思っているのですが、素人でなかなかうまくいきません。
ご教授お願いします。
自分なりに考えて作成したが之こちらです。
Sub 値段貼り付け()
Const FIND_STR = "番" '探す文字列
Dim find_flg As Boolean Dim sh As Object
find_flg = False
For Each sh In Sheets If sh.Name Like "*" & FIND_STR & "*" Then
'見つかった1枚目のシートの場合 If find_flg = False Then '元々選択されていたシートの選択を解除 sh.Select Replace:=True find_flg = True '見つかった2枚目以降のシートの場合 Else '選択済みシートの選択を解除しない sh.Select Replace:=False ' 値段コピー' Range("G2:J2").Select Selection.Copy
'最終行を取得' Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 2).PasteSpecial Paste:=xlPasteValues
End If End If Next sh End Sub
こうすると最初の○○番シートの最終行だけ成功し、ほかのシートは最初の○○番シートと同じ行に入力してしまいます。シートによってデータが違うので最終行番号もシートごとに変わってきます。
< 使用 Excel:Excel2013、使用 OS:Windows7 >
セルの参照をきちんとシートを含めて指定していないからです。
例えば、 Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 2).PasteSpecial Paste:=xlPasteValues は sh.Cells(sh.Cells(Rows.Count, 1).End(xlUp).Row + 1, 2).PasteSpecial Paste:=xlPasteValues のように。
別案の一例です。
Sub 値段貼り付け() Const FIND_STR = "番" '探す文字列
Dim ws As Worksheet For Each ws In Worksheets If InStr(ws.Name, FIND_STR) Then ws.Cells(Rows.Count, "B").End(xlUp).Offset(1).Resize(1, 4).Value = ws.Range("G2:J2").Value End If Next End Sub (Mook) 2015/03/23(月) 13:41
(北国) 2015/03/23(月) 13:50
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.