これ何て呼びますか

いつもご参考にさせていただいております。

さっそく質問について、
複数シートのデータを1シートにまとめて転記させたいと思っております。

もろもろ検索して以下のようなソースを組んだのですが、
現状だと【B2セル】に最初の値が転記されます。
これを【B10セル】に転記させたい場合は如何すればよいのでしょうか?

初歩的な質問で大変恐縮ですが、ご教授いただけると嬉しいです。
宜しくお願い致します><


Sub ボタン1_Click()

Worksheets("ALL_Sheet").Cells.Delete

Dim w
Dim Last_data
For Each w In Worksheets

'「**」を含むシート名のみ対象
If InStr(w.Name, "**") > 0 Then
'該当シートのB3:D99の範囲をコピー
w.Range("b3", "d99").Copy

'「ALL_Sheet」シートに
'1つ目シートのデータを貼り付けたら、その下にすぐ次のデータを貼り付ける。
Last_data = Worksheets("ALL_Sheet").Range("b" & Rows.Count).End(xlUp).Row

Worksheets("ALL_Sheet").Range("b" & Last_data + 1).PasteSpecial Paste:=xlPasteValues

End If

Next


End Sub

A 回答 (2件)

多分、質問者さんにはb10セルに貼り付けたい


理由がおありと思うんですが
それならば、vbaをなおす方法以外にも
b1-b9までセルに何か入力しておくという方法も
あります。

自分なんかは雑なので、文字の色を白にして
何か入力しておきますね。
色々方法はあると思うので、最善の方法を
ご自分で考えたらいいんじゃないでしょうか?
    • good
    • 0

こんにちは



一番最初にまとめのシートでLast_dataを求めると、シート内のデータを全て消去した直後なので1(行目)になります。
ですので、次の行にあたる2行目(B2セル)からペーストするようなコードになっています。

>【B10セル】に転記させたい場合は如何すればよいのでしょうか?
『Last_dataを求めた際に、値が9より小さかったら9にする』
という処理を加えればうまくいきませんか?

IFで判定して値を変える文を入れても良いですし、値を計算する際に
 =MAX(最終行, 9)
のようにして、一気に求めてしまってもよさそうです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!