返回列表 上一主題 發帖

將資料複製到不同的工作表

本帖最後由 stillfish00 於 2012-12-10 20:20 編輯

回復 1# fangsc
參考看看下面程式 , 但其實資料量若是很大的話不是很建議直接在Worksheet_Change事件內去處理
  1. Option Explicit
  2. Private Sub Worksheet_Change(ByVal Target As Range)
  3.     Dim ws As Worksheet
  4.     Dim r As Long
  5.     Dim sales As String
  6.                
  7.     Application.ScreenUpdating = False
  8.    
  9.     'clear header
  10.     For Each ws In Sheets
  11.         If not ws is Me Then
  12.             ws.UsedRange.Offset(1).ClearContents
  13.         End If
  14.     Next
  15.    
  16.     For r = 2 To Range("C" & Rows.Count).End(xlUp).Row
  17.         sales = Cells(r, "C").Value
  18.         
  19.         If sales <> "" Then
  20.             If Not hasSheet(sales) Then
  21.                 With Sheets.Add(After:=Sheets(Sheets.Count))
  22.                     .name = sales
  23.                     [A1:H1].Copy .[A1]
  24.                 End With
  25.             End If
  26.             
  27.             With Sheets(sales)
  28.                 .Range("C" & .Rows.Count).End(xlUp).Offset(1, -2).Resize(1, 8) = Range("A" & r & ":" & "H" & r).Value
  29.             End With
  30.         End If
  31.     Next r
  32.    
  33.     Me.Select
  34.     Application.ScreenUpdating = True
  35. End Sub

  36. Function hasSheet(name As String) As Boolean
  37.     Dim ws As Worksheet
  38.    
  39.     On Error Resume Next
  40.     Set ws = Sheets(name)
  41.     On Error GoTo 0
  42.    
  43.     If ws Is Nothing Then
  44.         hasSheet = False
  45.     Else
  46.         hasSheet = True
  47.     End If
  48.    
  49.     Set ws = Nothing
  50. End Function
複製代碼

TOP

        靜思自在 : 心中常存善解、包容、感思、知足、惜福。
返回列表 上一主題