- 帖子
- 4901
- 主題
- 44
- 精華
- 24
- 積分
- 4916
- 點名
- 142
- 作業系統
- Windows 7
- 軟體版本
- Office 20xx
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-4-30
- 最後登錄
- 2026-7-16
                
|
回復 3# luke
一般模組- Public Dic As Object
- Sub Auto_Open()
- Dim Sht(), A As Range
- Set Dic = CreateObject("Scripting.Dictionary")
- Sht = Array("Sheet2", "Sheet3")
- For Each sh In Sht
- With Worksheets(sh)
- For Each A In .Range(.[A1], .[A1].End(xlDown))
- Select Case sh
- Case "Sheet2"
- Dic(A.Value) = Array(A.Offset(, 1).Value, A.Offset(, 2).Value)
- Case "Sheet3"
- Dic(A.Value) = Array(A.Offset(, 1).Value, A.Offset(, 2).Value, A.Offset(, 3).Value)
- End Select
- Next
- End With
- Next
- End Sub
複製代碼 Sheet1模組- Private Sub Worksheet_Change(ByVal Target As Range)
- If Target.Count > 1 Then Exit Sub
- If IsEmpty(Dic(Target.Value)) Or Target.Count > 1 Then Exit Sub
- s = IIf(Target.Column = 1, 2, IIf(Target.Column = 4, 3, 0))
- k = UBound(Dic(Target.Value)) + 1
- If s <> k Then Exit Sub
- Application.EnableEvents = False
- Target.Offset(, 1).Resize(, k).Value = Dic(Target.Value)
- Application.EnableEvents = True
- End Sub
複製代碼 存檔後關閉再重新開啟檔案 |
|