Excel / Excel VBA剪切和复制重置单元名称
情况很简单,如果我将单元格A1
命名为MY_CELL
,然后从单元格A2
切换到单元格MY_CELL
,那么MY_CELL
将失去该名称并再次命名为A1
。
但是,从A2
复制到MY_CELL
时,不会发生这种情况。
如何防止Excel重置CUT和PASTE上的单元名称?
逻辑 :使用Worksheet_Change
事件捕获对单元格A1
的更改,并在名称丢失时重新创build该名称。
代码 :
Private Sub Worksheet_Change(ByVal Target As Range) Dim DoesRngNameExists As Boolean Dim sName As String On Error GoTo Whoa Application.EnableEvents = False '~~> You named range sName = "MY_CELL" If Not Intersect(Target, Range("A1")) Is Nothing Then '~~> Check if the Range exists On Error Resume Next DoesRngNameExists = Len(Names(sName).Name) <> 0 On Error GoTo 0 '~~> If not then recreate it If DoesRngNameExists = False Then _ ThisWorkbook.Names.Add Name:=sName, RefersToR1C1:="=Sheet1!R1C1" End If Letscontinue: Application.EnableEvents = True Exit Sub Whoa: MsgBox Err.Description Resume Letscontinue End Sub
注意 :相关工作表的“代码”区域中的代码。 看下面的截图。