|    | 
     ▼どじょりん さん: 
 
>1.sheet(削除一覧)の販売数欄に、台帳の在庫数が入力されている 
>  →台帳シートのA列の販売数を転記したい 
 
ごめんなさい。アップされたレイアウトをよく見ていませんでした。 
ところで、罫線ですが、元シートの罫線と同じスタイルということですか? 
とりあえず、以下は元シートの罫線が、あっても無視して、新たに、適当なものをセットしています。 
 
Private Sub CommandButton1_Click() 
  Dim wkCol As Long 
  Dim x As Long 
  Dim y As Long 
  
  If WorksheetFunction.Count(Columns("A")) = 0 Then 
      MsgBox "削除すべきデータがありません" 
    Exit Sub 
  End If 
 
  Application.ScreenUpdating = False 
  
  'まず空白以外を抽出 
  wkCol = Range("A2").CurrentRegion.Columns.Count + 2 '作業列番号 
  Cells(1, wkCol).Value = Range("A2").Value      '販売数タイトル 
  Cells(2, wkCol).Value = "<>"            '抽出条件 空白以外 
   
  Range("A2").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _ 
    CriteriaRange:=Cells(1, wkCol).Resize(2), CopyToRange:=Cells(1, wkCol + 2), Unique:=False 
  With Cells(1, wkCol + 2).CurrentRegion 
    y = .Rows.Count - 1 '抽出データ行数 
    x = .Columns.Count '一覧列数 
  End With 
  
  With Worksheets("削除一覧") 
    .Rows(2).Resize(y).Insert 
    With .Range("A2").Resize(y, x)                '★追加 
      .Value = Cells(2, wkCol + 2).Resize(y, x).Value     '★変更 
      .Borders.LineStyle = xlThin               '★追加 
      .Borders.Weight = xlContinuous              '★追加 
    End With                           '★追加 
    .Range("D2").Resize(x).Value = .Range("A2").Resize(x).Value '★追加 
    .Range("A2").Resize(y).Value = Date 
  End With 
  
  '在庫引落 
  y = Range("A" & Rows.Count).End(xlUp).Row 
  Range("A3:A" & y).Copy 
  Range("D3").PasteSpecial Paste:=xlPasteAll, Operation:=xlSubtract, _ 
                      SkipBlanks:=False, Transpose:=False 
 
  Cells(1, wkCol + 2).CurrentRegion.Clear 
  Cells(1, wkCol).Value = Range("D2").Value      '在庫数タイトル 
  Cells(2, wkCol).Value = ">0"            '抽出条件 在庫 0 
  
  Range("A2").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _ 
    CriteriaRange:=Cells(1, wkCol).Resize(2), CopyToRange:=Cells(1, wkCol + 2), Unique:=False 
   
  'リスト置換え 
  With Range("A2").CurrentRegion 
    .Value = Cells(1, wkCol + 2).Resize(.Rows.Count, .Columns.Count).Value 
    .Resize(.Rows.Count - 1, 2).Offset(1).ClearContents   '★追加 
  End With 
  
  Cells(1, wkCol).CurrentRegion.Clear 
  Cells(1, wkCol + 2).CurrentRegion.Clear 
  
  Application.ScreenUpdating = True 
  
  MsgBox "処理が終わりました" 
End Sub 
 | 
     
    
   |