| 
    
     |  | こんにちは。かみちゃん です。 
 >ブックの構成
 >
 >●1枚目:使わないシート
 >●2枚目〜8枚目:縦に結合したいシート
 >  それぞれ同じフォーム「A5〜F15にデータあり」
 >  ただし、5行目はタイトル行
 >
 >したいこと
 >●2枚目〜8枚目を縦に結合したい。
 >●タイトル行は先頭のみ必要
 >
 >という前提で以下のコードを書きました。
 >しかし、A列の左に1列追加して(罫線などの書式はA列と同じ)
 >シート名を各行のA列として縦にくっつけたいという要望がありました。
 >これに対応したいのですが、どう書いていいのか分かりません。
 >
 >
 >●1列追加のところはチャレンジしたましたが、エラーが出ました。
 >●シート名を各行のA列として縦にくっつける部分は全く分かりません。
 
 以下のようなことがしたいのでしょうか?
 
 Sub 結合()
 Dim Worksheet As Worksheet
 Dim DATA1 As Range, DATA2 As Range
 Dim i As Integer
 
 '入力ボックスにてシート名前、出力先、出力データセットを入力する。
 '先頭にシートを作成する
 ' Sheets(3).Copy before:=Sheets(1)
 Sheets.Add
 ActiveSheet.Name = "縦結合"
 ' Sheets(1).Name = "縦結合"
 
 
 '最初にデータセットを出力する位置を設定する
 Set DATA1 = Worksheets("縦結合").Range("A6")
 
 For i = 3 To Worksheets.Count
 '結合したいデータセットをDATA2として読み込む。
 Set DATA2 = Sheets(i).Range("A6:F15")
 'DATA1をDATA2とする。
 DATA2.Copy DATA1.Offset(, 1)
 DATA1.Resize(DATA2.Rows.Count).Value = Sheets(i).Name '★
 '次のデータセットを出力する位置を設定する。
 Set DATA1 = DATA1.Offset(DATA2.Rows.Count)
 
 Next
 
 'A列をコピーして挿入する
 ' Sheets(1).Range("A").Copy
 ' Sheets(1).Range("B").Insert
 ' Application.CutCopyMode = False
 
 
 'データセットをリセットする。
 Set DATA1 = Nothing
 Set DATA2 = Nothing
 
 End Sub
 
 
 >●1列追加のところはチャレンジしたましたが、エラーが出ました。
 
 エラーが出る理由は、
 Sheets(1).Range("A:A").Copy
 Sheets(1).Range("B:B").Insert
 としなければいけません。
 
 >●シート名を各行のA列として縦にくっつける部分は全く分かりません。
 
 上記の★の行のように処理すればできます。
 
 
 |  |