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 

注意 :相关工作表的“代码”区域中的代码。 看下面的截图。

在这里输入图像说明