1)要去了解每一行程式碼的意思, 不然問一堆會沒完沒了~~~~
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xR As Range, xF As Range, xCr, xCf, j%
xCr = Array(3, 6, 7)
xCf = Array(2, 4, 5)
With Target.Columns(1) '貼入或輸入區的第一欄
If .Column <> 1 Then Exit Sub
For Each xR In .Cells
If .Row = 1 Then GoTo 101
xR(1, 3).Resize(1, 5).ClearContents
If xR = "" Then GoTo 101
Set xF = Sheet1.[A:A].Find(xR, LookAt:=xlWhole, MatchCase:=False)
If xF Is Nothing Then GoTo 101
For j = 0 To UBound(xCr)
xR(1, xCr(j)) = xF(1, xCf(j)).Value
Next j
101: Next
End With
End Sub
Sub CopyPaste()
Dim xA As Range, xB As Workbook, xS As Worksheet, Chk%
Set xA = ActiveSheet.UsedRange
Application.ScreenUpdating = False
Set xB = Workbooks.Open(ThisWorkbook.Path & "\bcca.xls", Password:="1234")
For Each xS In xB.Sheets
If Left(xS.Name, 6) = "w_PRG_" Then Chk = 1: Exit For
Next
If Chk = 0 Then MsgBox "工作表〔w_PRG〕不存在! ": Exit Sub
With xS
.Unprotect "pass"
.UsedRange.Clear
xA.Copy .[A1]
.UsedRange.Font.Color = vbWhite
.Name = "w_PRG_" & Format(Date, "yyyymmdd")
.Protect "pass"
End With
xB.Close 1
MsgBox "複製完成! "
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xR As Range, xF As Range, xCr, xCf, j%
xCr = Array(3, 6, 7) '本表要貼入的欄位
xCf = Array(2, 4, 5) '來源表要複製的欄位
With Target
If .Columns.Count > 1 Or .Column <> 1 Then Exit Sub
For Each xR In .Cells
If .Row = 1 Then GoTo 101
xR(1, 2).Resize(1, 7).ClearContents
If xR = "" Then GoTo 101
Set xF = Sheet1.[A:A].Find(xR, LookAt:=xlWhole, MatchCase:=False)
'_Sheet1為來源表的[屬性名稱], 工作表名稱可任意更改而不影響(見下圖)
If xF Is Nothing Then GoTo 101
For j = 0 To UBound(xCr)
xR(1, xCr(j)) = xF(1, xCf(j)).Value
Next j
101: Next
End With
End Sub