- 帖子
- 129
- 主題
- 25
- 精華
- 0
- 積分
- 159
- 點名
- 0
- 作業系統
- win7
- 軟體版本
- office2010
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2011-12-24
- 最後登錄
- 2022-12-12
|
- Private Sub CommandButton3_Click()
- Dim Sh As Worksheet, i As Integer, ii As Integer, R As Integer, Ar 'Dim 宣告變數
- Dim k As Integer
- Dim j As String
- Dim A As Range, Rng As Range, xRow As Range
-
- Application.DisplayAlerts = False
- Application.ScreenUpdating = False
- For Each Sh In Sheets
-
- If Sh.Name <> "Sheet1" And Sh.Name <> "總表" And Sh.Name <> "表格範本" And Sh.Name <> "黏存單(零)" And Sh.Name <> "參照表" Then Sh.Delete
- '活頁簿只留 工作表1:是輸入區,工作表2:是歷史記錄 ,"表格範本",黏存單(零),參照表
- Next
-
- With Sheets("總表")
- If .UsedRange.Rows.Count = 1 Then '沒有歷史紀錄
- Sheets("Sheet1").UsedRange.Copy '複製(含標頭)
- .Range("A1").PasteSpecial xlPasteValues
-
- Else
- Sheets("Sheet1").UsedRange.Offset(1).Copy '複製(不含標頭)
- Sheets("總表").Range("A" & .UsedRange.Rows.Count).Offset(3).PasteSpecial xlPasteValues
- 'Offset(3) :空2列->第3列貼上
-
- End If
-
- End With
-
-
- With Sheets("Sheet1")
-
- .UsedRange.Range("G:G").AdvancedFilter xlFilterCopy, , .Cells(1, .Columns.Count), True
- '進階篩選 E欄 不重複資料到工作表最右欄 ***取得類別的分類***
- 'AdvancedFilter:進階篩選
- 'xlFilterCopy:進階篩選的資料顯示在其他地方
- '.Cells(1, .Columns.Count) ->工作表的最右欄第1個儲存格->進階篩選的資料顯示的地方
- i = 2
- Do While .Cells(i, .Columns.Count) <> "" '工作表最右欄的儲存格 <>""
- .Range("A:G").AutoFilter 7, .Cells(i, .Columns.Count) 'AutoFilter: 自動篩選 ,第7欄(類別)的準則為 .Cells(i, .Columns.Count)
- Sheets("表格範本").Copy , Sheets(Sheets.Count)
- Set Sh = ActiveSheet
-
-
- With Sheets("參照表")
- Set Rng = .Range("A:A").Find(what:=Sheets("Sheet1").Cells(i, .Columns.Count))
- 'MsgBox (Rng)
- j = Rng.Offset(, 1)
- End With
-
- '@@@上面那行 j = Rng.Offset(, 1) 有時候跑一次能執行,後來就警告了
- Sh.[C2] = j '@@@有時候是警告這一行錯誤
- Sh.Name = Rng
-
- j = "" '這兩行是我覺得使用後清空,加這兩行錯誤也沒消失
- Rng = ""
-
- For Each xRow In .AutoFilter.Range.SpecialCells(xlCellTypeVisible).Rows '自動篩選範圍列的集合
-
- If xRow.Row > 1 Then
-
- R = Application.CountA(Sh.[D7:D19]) '有輸入的資料數
-
- With Sh.[D7].Offset(R)
-
- .Cells(, 1) = xRow.Range("D1")
-
- .Cells(, 5) = xRow.Range("F1")
-
- .Cells(, 7) = xRow.Range("E1")
-
- '@@@ 大大,這邊可能還要再把日期加進E3,我不會寫 (其實看不太懂為什麼,所以不會改)
- End With
-
- If Application.CountA(Sh.[D7:D19]) = 13 Then
-
- Sh.Copy , Sh
-
- Set Sh = ActiveSheet
-
- Sh.[D7:J19] = ""
-
- End If
-
- End If
-
- Next
- i = i + 1
- Loop
-
- k = 1
- Do While .Cells(k, .Columns.Count) <> ""
- .Cells(k, .Columns.Count) = ""
- k = k + 1
- Loop
-
- '.Cells(1, .Columns.Count).CurrentRegion = ""
- .AutoFilterMode = False
- End With
- Application.ScreenUpdating = True
- Me.Activate
- End Sub
複製代碼 回復 26# GBKEE
大大,我把您第一次的程式修改一下,可是有些地方警告說沒有WITH和區域變數
快完成了,幫我看看,謝謝
[attach]17426[/attach]
[attach]17427[/attach]
庶字第XX號,的XX由人工手動輸入即可
[attach]17428[/attach] |
|