Private Sub Worksheet_Change(ByVal Target As Range)
Dim ColX As Integer, RowX As Long, XRowX As Long
Dim X, I As Integer
On Error Resume Next
ColX = Target.Column '精简表当前行的行号
RowX = Target.Row '精简表当前列的列号
XRowX = (RowX - 3) * 12 + 3 '对应总表的首行行号
X = Application.WorksheetFunction.Match(Cells(RowX, 6).Value, Sheets("Sheet2").Range("F1:K1"), 0) '获取方案表中的位置(第几列)
If ColX < 31 And RowX > 2 Then '是数据范围执行下面程序
Sheets("总表").Cells(XRowX, ColX).Value = Cells(RowX, ColX).Value '将精简表当前值填写到总表对应单元格
'############
If Sheets("Sheet2").Cells(ColX, 1).Value <> 0 Then '判断该列是否要填写到制剂交接单,若是则填写
Sheets("制剂交接单").Cells(XRowX, Sheets("Sheet2").Cells(ColX, 1).Value).Value = Cells(RowX, ColX).Value
End If
Select Case ColX '根据当前列号执行不同的程序
Case 6, 7, 8, 9, 10, 11
If IsNumeric(X) Then '如果方案是合法的执行
Sheets("总表").Range("B" & CStr(XRowX + 1) & ":E" & CStr(XRowX + 11)).ClearContents '清除设定区域内的数据
Sheets("总表").Range("F" & CStr(XRowX + 1) & ":L" & CStr(XRowX + 11)).ClearContents '清除设定区域内的数据
Sheets("制剂交接单").Range("A" & CStr(XRowX + 1) & ":E" & CStr(XRowX + 11)).ClearContents '清除设定区域内的数据
Sheets("制剂交接单").Range("F" & CStr(XRowX + 1) & ":K" & CStr(XRowX + 11)).ClearContents '清除设定区域内的数据
I = 2
While Sheets("Sheet2").Cells(I, X + 5).Value <> "" And I < 14 '安照方案表填写相关内容
Sheets("总表").Cells(XRowX + I - 1, 6).Value = Cells(Target.Row, 6).Value
Sheets("总表").Cells(XRowX + I - 1, 7).Value = Cells(Target.Row, 1).Value + Sheets("Sheet2").Cells(I + 12, X + 5).Value
Sheets("总表").Cells(XRowX + I - 1, 8).Value = Sheets("Sheet2").Cells(I, X + 5).Value
Sheets("总表").Cells(XRowX + I - 1, 9).Value = Sheets("Sheet2").Cells(I + 24, X + 5).Value
If Sheets("Sheet2").Cells(I + 36, X + 5).Value <> "" Then
Sheets("总表").Cells(XRowX + I - 1, 10).Value = Sheets("Sheet2").Cells(I + 36, X + 5).Value
Else
Sheets("总表").Cells(XRowX + I - 1, 10).Value = Cells(Target.Row, 10).Value
End If
If Sheets("Sheet2").Cells(I + 48, X + 5).Value <> "" Then
Sheets("总表").Cells(XRowX + I - 1, 11).Value = Sheets("Sheet2").Cells(I + 48, X + 5).Value
Else
Sheets("总表").Cells(XRowX + I - 1, 11).Value = Cells(Target.Row, 11).Value
End If
Sheets("总表").Cells(XRowX + I - 1, 2).Value = Sheets("总表").Cells(XRowX, 2).Value
Sheets("总表").Cells(XRowX + I - 1, 3).Value = Sheets("总表").Cells(XRowX, 3).Value
Sheets("总表").Cells(XRowX + I - 1, 4).Value = Sheets("总表").Cells(XRowX, 4).Value
Sheets("总表").Cells(XRowX + I - 1, 5).Value = Sheets("总表").Cells(XRowX, 5).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 1).Value = Sheets("总表").Cells(XRowX + I - 1, 7).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 2).Value = Sheets("总表").Cells(XRowX, 2).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 3).Value = Sheets("总表").Cells(XRowX, 3).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 4).Value = Sheets("总表").Cells(XRowX, 4).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 5).Value = Sheets("总表").Cells(XRowX, 5).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 6).Value = Sheets("总表").Cells(XRowX + I - 1, 6).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 7).Value = Sheets("总表").Cells(XRowX + I - 1, 8).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 8).Value = Sheets("总表").Cells(XRowX + I - 1, 9).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 9).Value = Sheets("总表").Cells(XRowX + I - 1, 10).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 10).Value = Sheets("总表").Cells(XRowX + I - 1, 11).Value
I = I + 1
Wend
End If
Case 1
If IsNumeric(X) Then
I = XRowX + 1
While Sheets("总表").Cells(I, 7).Value <> ""
Sheets("总表").Cells(I, 7).Value = Sheets("总表").Cells(I, 7).Value - OldDate + Cells(Target.Row, 1).Value
I = I + 1
Wend
I = XRowX + 1
While Sheets("制剂交接单").Cells(I, 1).Value <> ""
Sheets("制剂交接单").Cells(I, 1).Value = Sheets("制剂交接单").Cells(I, 1).Value - OldDate + Cells(Target.Row, 1).Value
I = I + 1
Wend
On Error Resume Next
Sheets("总表").Rows(CStr(XRowX + 1) & ":" & CStr(XRowX + 11)).Rows.Ungroup
Sheets("总表").Rows(CStr(XRowX + 1) & ":" & CStr(XRowX + 11)).Rows.Group
End If
Case 2, 3, 4, 5
If IsNumeric(X) Then
I = 2
While Sheets("Sheet2").Cells(I, X + 5).Value <> "" And I < 14
Sheets("总表").Cells(XRowX + I - 1, Target.Column).Value = Sheets("总表").Cells(XRowX, Target.Column).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, Target.Column).Value = Sheets("总表").Cells(XRowX, Target.Column).Value
I = I + 1
Wend
End If
Case 12
If IsNumeric(X) Then
I = 2
While Sheets("Sheet2").Cells(I, X + 5).Value <> "" And I < 14
Sheets("总表").Cells(XRowX + I - 1, 12).Value = Sheets("总表").Cells(XRowX, 12).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 11).Value = Sheets("总表").Cells(XRowX, 12).Value
I = I + 1
Wend
End If
Case 13
If IsNumeric(X) Then
I = 2
While Sheets("Sheet2").Cells(I, X + 5).Value <> "" And I < 14
Sheets("总表").Cells(XRowX + I - 1, 13).Value = Sheets("总表").Cells(XRowX, 13).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 12).Value = Sheets("总表").Cells(XRowX, 13).Value
I = I + 1
Wend
End If
Case 17
If IsNumeric(X) Then
I = 2
While Sheets("Sheet2").Cells(I, X + 5).Value <> "" And I < 14
Sheets("总表").Cells(XRowX + I - 1, 17).Value = Sheets("总表").Cells(XRowX, 17).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 18).Value = Sheets("总表").Cells(XRowX, 17).Value
I = I + 1
Wend
End If
Case 14, 15, 16, 18, 19, 20, 21, 22
For I = XRowX + 1 To XRowX + 11
Sheets("总表").Cells(I, Target.Column).Value = Sheets("总表").Cells(XRowX, Target.Column).Value
Next I
End Select
End If
'#############
End Sub
Dim ColX As Integer, RowX As Long, XRowX As Long
Dim X, I As Integer
On Error Resume Next
ColX = Target.Column '精简表当前行的行号
RowX = Target.Row '精简表当前列的列号
XRowX = (RowX - 3) * 12 + 3 '对应总表的首行行号
X = Application.WorksheetFunction.Match(Cells(RowX, 6).Value, Sheets("Sheet2").Range("F1:K1"), 0) '获取方案表中的位置(第几列)
If ColX < 31 And RowX > 2 Then '是数据范围执行下面程序
Sheets("总表").Cells(XRowX, ColX).Value = Cells(RowX, ColX).Value '将精简表当前值填写到总表对应单元格
'############
If Sheets("Sheet2").Cells(ColX, 1).Value <> 0 Then '判断该列是否要填写到制剂交接单,若是则填写
Sheets("制剂交接单").Cells(XRowX, Sheets("Sheet2").Cells(ColX, 1).Value).Value = Cells(RowX, ColX).Value
End If
Select Case ColX '根据当前列号执行不同的程序
Case 6, 7, 8, 9, 10, 11
If IsNumeric(X) Then '如果方案是合法的执行
Sheets("总表").Range("B" & CStr(XRowX + 1) & ":E" & CStr(XRowX + 11)).ClearContents '清除设定区域内的数据
Sheets("总表").Range("F" & CStr(XRowX + 1) & ":L" & CStr(XRowX + 11)).ClearContents '清除设定区域内的数据
Sheets("制剂交接单").Range("A" & CStr(XRowX + 1) & ":E" & CStr(XRowX + 11)).ClearContents '清除设定区域内的数据
Sheets("制剂交接单").Range("F" & CStr(XRowX + 1) & ":K" & CStr(XRowX + 11)).ClearContents '清除设定区域内的数据
I = 2
While Sheets("Sheet2").Cells(I, X + 5).Value <> "" And I < 14 '安照方案表填写相关内容
Sheets("总表").Cells(XRowX + I - 1, 6).Value = Cells(Target.Row, 6).Value
Sheets("总表").Cells(XRowX + I - 1, 7).Value = Cells(Target.Row, 1).Value + Sheets("Sheet2").Cells(I + 12, X + 5).Value
Sheets("总表").Cells(XRowX + I - 1, 8).Value = Sheets("Sheet2").Cells(I, X + 5).Value
Sheets("总表").Cells(XRowX + I - 1, 9).Value = Sheets("Sheet2").Cells(I + 24, X + 5).Value
If Sheets("Sheet2").Cells(I + 36, X + 5).Value <> "" Then
Sheets("总表").Cells(XRowX + I - 1, 10).Value = Sheets("Sheet2").Cells(I + 36, X + 5).Value
Else
Sheets("总表").Cells(XRowX + I - 1, 10).Value = Cells(Target.Row, 10).Value
End If
If Sheets("Sheet2").Cells(I + 48, X + 5).Value <> "" Then
Sheets("总表").Cells(XRowX + I - 1, 11).Value = Sheets("Sheet2").Cells(I + 48, X + 5).Value
Else
Sheets("总表").Cells(XRowX + I - 1, 11).Value = Cells(Target.Row, 11).Value
End If
Sheets("总表").Cells(XRowX + I - 1, 2).Value = Sheets("总表").Cells(XRowX, 2).Value
Sheets("总表").Cells(XRowX + I - 1, 3).Value = Sheets("总表").Cells(XRowX, 3).Value
Sheets("总表").Cells(XRowX + I - 1, 4).Value = Sheets("总表").Cells(XRowX, 4).Value
Sheets("总表").Cells(XRowX + I - 1, 5).Value = Sheets("总表").Cells(XRowX, 5).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 1).Value = Sheets("总表").Cells(XRowX + I - 1, 7).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 2).Value = Sheets("总表").Cells(XRowX, 2).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 3).Value = Sheets("总表").Cells(XRowX, 3).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 4).Value = Sheets("总表").Cells(XRowX, 4).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 5).Value = Sheets("总表").Cells(XRowX, 5).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 6).Value = Sheets("总表").Cells(XRowX + I - 1, 6).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 7).Value = Sheets("总表").Cells(XRowX + I - 1, 8).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 8).Value = Sheets("总表").Cells(XRowX + I - 1, 9).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 9).Value = Sheets("总表").Cells(XRowX + I - 1, 10).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 10).Value = Sheets("总表").Cells(XRowX + I - 1, 11).Value
I = I + 1
Wend
End If
Case 1
If IsNumeric(X) Then
I = XRowX + 1
While Sheets("总表").Cells(I, 7).Value <> ""
Sheets("总表").Cells(I, 7).Value = Sheets("总表").Cells(I, 7).Value - OldDate + Cells(Target.Row, 1).Value
I = I + 1
Wend
I = XRowX + 1
While Sheets("制剂交接单").Cells(I, 1).Value <> ""
Sheets("制剂交接单").Cells(I, 1).Value = Sheets("制剂交接单").Cells(I, 1).Value - OldDate + Cells(Target.Row, 1).Value
I = I + 1
Wend
On Error Resume Next
Sheets("总表").Rows(CStr(XRowX + 1) & ":" & CStr(XRowX + 11)).Rows.Ungroup
Sheets("总表").Rows(CStr(XRowX + 1) & ":" & CStr(XRowX + 11)).Rows.Group
End If
Case 2, 3, 4, 5
If IsNumeric(X) Then
I = 2
While Sheets("Sheet2").Cells(I, X + 5).Value <> "" And I < 14
Sheets("总表").Cells(XRowX + I - 1, Target.Column).Value = Sheets("总表").Cells(XRowX, Target.Column).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, Target.Column).Value = Sheets("总表").Cells(XRowX, Target.Column).Value
I = I + 1
Wend
End If
Case 12
If IsNumeric(X) Then
I = 2
While Sheets("Sheet2").Cells(I, X + 5).Value <> "" And I < 14
Sheets("总表").Cells(XRowX + I - 1, 12).Value = Sheets("总表").Cells(XRowX, 12).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 11).Value = Sheets("总表").Cells(XRowX, 12).Value
I = I + 1
Wend
End If
Case 13
If IsNumeric(X) Then
I = 2
While Sheets("Sheet2").Cells(I, X + 5).Value <> "" And I < 14
Sheets("总表").Cells(XRowX + I - 1, 13).Value = Sheets("总表").Cells(XRowX, 13).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 12).Value = Sheets("总表").Cells(XRowX, 13).Value
I = I + 1
Wend
End If
Case 17
If IsNumeric(X) Then
I = 2
While Sheets("Sheet2").Cells(I, X + 5).Value <> "" And I < 14
Sheets("总表").Cells(XRowX + I - 1, 17).Value = Sheets("总表").Cells(XRowX, 17).Value
Sheets("制剂交接单").Cells(XRowX + I - 1, 18).Value = Sheets("总表").Cells(XRowX, 17).Value
I = I + 1
Wend
End If
Case 14, 15, 16, 18, 19, 20, 21, 22
For I = XRowX + 1 To XRowX + 11
Sheets("总表").Cells(I, Target.Column).Value = Sheets("总表").Cells(XRowX, Target.Column).Value
Next I
End Select
End If
'#############
End Sub