[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数あるシートの各最終行にペースト』(北国)
シートが複数ありシート名に○○番とついているシートのみ
各シートの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.