いつもお世話になっております。
下記のコードで シート1・2の値を
シート3にまとめたいのですが、
シート1の貼り付けの後offset(1)
を利用しても上書きされてしまいます。
教えてくれませんでしょぅか
Range("A1").Resize(UBound(x), UBound(x, 2)).Value = x
Dim Array1
Dim ws As Worksheet
Array1 = Array("1", "2")
For i = 0 To UBound(Array1)
For Each ws In ThisWorkbook.Worksheets
If ws.Name = Array1(i) Then
x = Worksheets(Array1(i)).Range("A1").CurrentRegion.Value
Range("A1").Resize(UBound(x), UBound(x, 2)).Value = x
End If
Next
Next
No.2ベストアンサー
- 回答日時:
こんにちは
>シート1の貼り付けの後offset(1)
>を利用しても上書きされてしまいます。
Offset(1) だと、1行ずらしているだけなので、2行目以降は上書きされます。
想像するところ、なさりたいことは、転記した次の行から次のシートの値を転記したいってことではないのでしょうか?
その場合は、シート1の値がxにあるなら、Offset(xの行数)が必要になりますよね?
・方法1
記入先のスタートセルを変数化しておいて、初期値に
Set destRange = Range("A1")
としておいて、転記時には
destRange.Resize(UBound(x), UBound(x, 2)).Value = x
転記した後に、転記先を次の位置に移動させておく
Set destRange = destRange.Offset(UBound(x))
・方法2
シート3がクリアされていると仮定してよく、また、A列の最終行の次をスタートセルと判断してもよいのなら、転記時に、
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
If Cells(lastRow, 1) <> "" Then lastRow = lastRow + 1
Cells(lastRow, 1).Resize(UBound(x), UBound(x, 2)).Value = x
などとするのでもよろしいかと。
いつもお世話になっております
・方法1では うまくいきませんでした。
・方法2では うまくいきました。
ありがとうございます
たすかりました。
No.1
- 回答日時:
書き込む位置を変数化してないですしね。
Dim ws As Worksheet
Dim r3 as range
set r3=worksheets("3").range("A1") 'で良いのかな?
Array1 = Array("1", "2")
For i = 0 To UBound(Array1)
x = Worksheets(Array1(i)).Range("A1").CurrentRegion.Value
r3.Resize(UBound(x), UBound(x, 2)).Value = x
set r3=r3.offset(1)
Next
set r3=nothing
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 抽出結果を別シートに貼り付ける 2 2022/07/09 22:59
- Excel(エクセル) vbaで列幅について 1 2022/11/15 08:31
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 複数シート一括作成後に、特定範囲の数式は値で貼り付けしたい 3 2022/10/07 11:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
Excelマクロのエラーを解決した...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
ExcelのVBAのマクロで他のシー...
-
【Excel VBA】Worksheets().Act...
-
実行時エラー1004「Select メソ...
-
同じ作業を複数のシートに実行...
-
実行時エラー'1004': WorkSheet...
-
excelのマクロで該当処理できな...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
エクセルのシート名変更で重複...
-
XL:BeforeDoubleClickが動かない
-
VBAでオブジェクト変数にsetし...
-
VBA 最終行まで数式をコピーする
-
エクセルVBA Ifでシート名が合...
-
VBA 検索して一致したセル...
-
ブック名、シート名を他のモジ...
-
Excel マクロについての相談
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
XL:BeforeDoubleClickが動かない
-
ExcelVBA シート名を複数セルか...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
【Excel VBA】Worksheets().Act...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報