首页 > 解决方案 > Record Macro 可以自动使用定义的名称而不是单元格名称吗?

问题描述

我正在使用记录宏来做一个简单的复制和粘贴 VBA 代码:

Range("F12").Select 
Selection.Copy 
Range("F10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False 

但是我已经定义了单元格 F12 和 F10(所以如果我要添加行/列,它不会弄乱公式),我想知道是否有办法记录宏以便它使用定义的名称自动地。这可能吗?或者在我记录后我可以在代码中添加一行可以轻松地用定义的名称替换单元格吗?现在我正在使用定义的名称手动更新代码。我想继续使用记录宏,因为这次我已经手动进行了复制和粘贴,但我希望将来使用 VBA。

标签: excelvbaexcel-formula

解决方案


根据现实中的数据/单元格的数量(而不是在你的 Q 中,我认为出于实际原因可能会“缩小”),您会发现通过简单地“设置”目标单元格等于源值来更快地执行 VB :

Sub Demo()

Application.ScreenUpdating = False
[named_cell_destination].Value = [named_cell_source].Value
Application.ScreenUpdating = False

End Sub

其中:“ named_cell_source ”和“ named_cell_destination ”是您从 excel 本身中获得的名称。

或者,如果您想在 excel 中归属/添加命名范围,并在此后采用与上述类似的方法,您可以执行以下操作:

Sub Demo2()

Dim Rng, Rng2 As Range



  Set Rng = Range("A1:B8")
  Set Rng2 = Range("A12:B19")
  
  ThisWorkbook.Names.Add Name:="Range_1", RefersTo:=Rng
  ThisWorkbook.Names.Add Name:="Range_2", RefersTo:=Rng2
  
  [Range_2].Value = [Range_1].Value

End Sub

有关这方面的更多信息,请参阅wallstreetmojo


推荐阅读