当活动工作表 ("sheet1") 中命名范围 ("E10:E23") 中的值发生更改时,我需要 VBA 将另一个工作表中的给定单元格 ("C7")(该工作表的名称位于刚刚更改的单元格左侧 2 列)更改为 ("sheet1") 中已更改单元格的值。例如:如果 ("Sheet1").Range("E15") 发生更改,则名称为 ("sheet1").Range("C15") 的工作表中的 ("C7") 应更改为 ("sheet1").Range("E15") 中的值。如果 ("Sheet1").Range("E8") 发生更改,则名称为 ("sheet1").Range("C8") 的工作表中的 ("C7") 应更改为 ("sheet1").Range("E8") 中的值。依此类推。该代码是什么?
答案1
此代码进入您描述为“sheet1”的工作表的工作表代码中,而不是模块中。
Private Sub Worksheet_Change(ByVal Target As Range)
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Dim ws As Worksheet
On Error GoTo MyExit
If Not Intersect(Target, Range("E10:E23")) Is Nothing Then
Set ws = Sheets(Target.Offset(0, -2).Value)
ws.Range("C7").Value = Target.Value
End If
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Exit Sub
MyExit:
msgbox "Sheetname not found"
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
我想这就是你所追求的。
贾斯汀