- 帖子
- 4901
- 主題
- 44
- 精華
- 24
- 積分
- 4916
- 點名
- 142
- 作業系統
- Windows 7
- 軟體版本
- Office 20xx
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-4-30
- 最後登錄
- 2026-7-16
                
|
回復 6# alltest
試試看
book2的一般模組- Sub Auto_Open()
- Dim ary(), fs$, Sh As Worksheet
- Dim ay(1), Ar, Ky, s&
- Set d = CreateObject("Scripting.Dictionary")
- fs = ThisWorkbook.Path & "\book1.xls"
- With Workbooks.Open(fs)
- With .Sheets(1)
- For Each A In .Range(.[B3], .[B3].End(xlDown))
- r = A.Row
- For Each b In .Range(.[E1], .[IV1].End(xlToLeft).Offset(, -1)).SpecialCells(xlCellTypeConstants)
- k = b.Column
- Ar = Array(.Cells(r, 2).Value, .Cells(r, 3).Value, .Cells(r, 4).Value, .Cells(r, k).Value, .Cells(r, k + 1).Value, .Cells(r, k + 2).Value)
- If IsEmpty(d(A & "-" & b)) Then
- ay(0) = Ar
- d(A & "-" & b) = ay
- Else
- ary = d(A & "-" & b)
- s = UBound(ary)
- ReDim Preserve ary(s + 1)
- ary(s) = Ar
- d(A & "-" & b) = ary
- End If
- Next
- Next
- End With
- For Each Sh In ThisWorkbook.Sheets
- With Sh
- .UsedRange.Offset(2) = ""
- Ky = .Name
- If IsArray(d(Ky)) Then
- ary = d(Ky)
- For i = 0 To UBound(ary) - 1
- .Cells(3 + i, 1).Resize(, UBound(Ar) + 1) = ary(i)
- Next
- End If
- End With
- Next
- .Close 0
- End With
- End Sub
複製代碼 |
|