| 
    
     |  | ▼UO3 さん: 
 ご返信有難うございます。
 ご教授していただいた通り、
 ---------------------------------------------------------------------------------
 Private Sub CommandButton1_Click()
 
 Dim WS1 As Worksheet
 Dim Tbl As Range
 Dim v, i As Long, n As Long, n1 As Long
 Dim myPath As String
 Dim newBook As Workbook
 Dim Bookname As String
 
 Application.DisplayAlerts = False
 
 myPath = ActiveWorkbook.Path & "\"
 Set WS1 = ActiveWorkbook.Worksheets("Sheet1")
 
 Set WS2 = ActiveWorkbook.Worksheets("Sheet2") 'テスト
 
 
 'Set Tbl = ActiveSheet.[A1].CurrentRegion '◆ A列で Sort済み
 Set Tbl = WS1.[A1].CurrentRegion '◆ A列で Sort済み
 
 n = Tbl.Rows.Count
 v = Tbl.Resize(n + 1, 1).Value
 n1 = 3    '◆変更
 For i = 3 To n '◆変更
 If v(i, 1) <> v(i + 1, 1) Then '下と違えば
 With Workbooks.Add(xlWBATWorksheet) '◆変更 シート1枚のBook
 Tbl.Rows("1:2").Copy .Sheets(1).[A1] '◆見出し行2行をCopy
 Tbl.Rows(n1 & ":" & i).Copy .Sheets(1).[A3] '3行目へ
 
 Sheets("Sheet1").Range("A10:J30").Value = WS2.Range("A5:J23").Value 'テスト
 
 
 .Sheets(1).UsedRange.EntireColumn.AutoFit '◆挿入
 
 
 With ActiveSheet.PageSetup
 .PrintTitleRows = "$1:$1"
 .PrintTitleColumns = ""
 End With
 ------------------------------------------------------------------------------------------
 にて、 「Set WS2 = ActiveWorkbook.Worksheets("Sheet2") 'テスト」
 と「Sheets("Sheet1").Range("A10:J30").Value = WS2.Range("A5:J23").Value 'テスト」
 を追加しましたが、上手くいきません。
 
 やりたい事は例として、
 「Sheet1」
 題名1
 題名2
 りんご \100
 りんご \100
 りんご \100
 バナナ \200
 バナナ \200
 メロン \500
 
 「Sheet2」
 
 -------注意事項-----------------
 冷蔵保存して下さい。
 ---------------------------------
 
 作成されるデータ1.
 題名1
 題名2
 りんご \100
 りんご \100
 りんご \100
 -------注意事項-----------------
 冷蔵保存して下さい。
 ---------------------------------
 
 作成されるデータ2.
 題名1
 題名2
 バナナ \200
 バナナ \200
 -------注意事項-----------------
 冷蔵保存して下さい。
 ---------------------------------
 
 作成されるデータ3.
 題名1
 題名2
 メロン \500
 -------注意事項-----------------
 冷蔵保存して下さい。
 ---------------------------------
 
 としたいと考えております。
 ご教授をお願い致します。
 
 
 >▼VBA初心者 さん:
 >
 >こんにちわ。
 >
 > コードは読んでいないけど、全体的に、元ブックのSheet1以外のシートがどれなのかが
 > ちょっとあいまいなコード記述になっていますね。全て、ちゃんと指定したほうがいいです。
 > 少なくとも、【元ブックのSheet2】は、ちゃんと(WS1のように)設定しておくべき。
 >
 > で、本題。
 > 質問文の中では「B6〜I33」、一方、アップされたコードの中では「B23:E23」。
 > ここはどうなのでしょう?
 >
 > いずれにしても
 >1.Range("B23:E23").Select  '◆テスト
 >2.Selection.Copy      '◆テスト
 >3.Sheets("Sheet1").Select  '◆テスト
 >4.ActiveSheet.Paste     '◆テスト
 >
 > この1.は、今アクティブなブックのアクティブなシートをさしています。
 > で、今、アクティブなブックは、新規に作成するために追加されたブックですよね。
 > それと気になるのは、4. これは新規に作成するブックのSHeet1にペーストするんだけど
 > そのペーストする場所は?たまたまブックを追加してから、セルを動かしてはいないので
 > A1を想定しているのでしょうか?
 >
 > たとえば元ブックのSheet2が WS2 なら
 >
 > WS2.Range("B23:E23").Copy Sheets("SHeet1").range("A1") といったように記述しましょう。
 >
 > 値コピーでいいならコピペじゃなく
 >
 > Sheets("Sheet1").range("A1:D23").value = WS2.Range("B23:E23").Value
 >
 > といった書き方のほうが素直かな?
 > (コピー先のセルは想像でA1にしているけど、ここは実際のものに)
 >
 > ★何をどうしたいのかがわからないので、コードをざっと眺めた上での感想。
 > 勘違いしていたらスルー願います。
 
 
 |  |