在Excel中向名称添加注释
我最近发现了一些让我有点困惑的事情: 我使用vba在工作表上为一个范围指定了一个特定的名称:在Excel中向名称添加注释,excel,vba,Excel,Vba,我最近发现了一些让我有点困惑的事情: 我使用vba在工作表上为一个范围指定了一个特定的名称: wks.Names.Add name:="databases", RefersTo:="=" & "$F$7:$F$" & j 这对我来说非常好,名称可以在名称管理器中看到,并具有正确的引用 在下一行代码中,我想使用 ActiveWorkbook.Names("databases").Comment = "created automatically by <sub> on
wks.Names.Add name:="databases", RefersTo:="=" & "$F$7:$F$" & j
这对我来说非常好,名称可以在名称管理器中看到,并具有正确的引用
在下一行代码中,我想使用
ActiveWorkbook.Names("databases").Comment = "created automatically by <sub> on " & Now()
ActiveWorkbook.Names(“数据库”).Comment=“自动创建人”&Now()
将此注释添加到名称时,名称的引用将更改,并且名称不再起作用。我很想知道为什么会发生这种情况。试试下面的代码:
Sub DefandModNames()
'
Dim MyName As Name
Dim wks As Worksheet
Set wks = Worksheets("Sheet1") '<-- modify "Sheet1" to your sheet's name
'j = 10 '<-- for my tests only
With ActiveWorkbook
Set MyName = .Names.Add(Name:="databases", RefersTo:="=" & wks.Name & "!$F$7:$F$" & j)
With MyName
.Comment = "created automatically by <sub> on " & Now()
End With
End With
End Sub
Sub-DefandModNames()
'
将MyName设置为名称
将工作作为工作表
设置wks=Worksheets(“Sheet1”)”尝试以下代码:
Sub DefandModNames()
'
Dim MyName As Name
Dim wks As Worksheet
Set wks = Worksheets("Sheet1") '<-- modify "Sheet1" to your sheet's name
'j = 10 '<-- for my tests only
With ActiveWorkbook
Set MyName = .Names.Add(Name:="databases", RefersTo:="=" & wks.Name & "!$F$7:$F$" & j)
With MyName
.Comment = "created automatically by <sub> on " & Now()
End With
End With
End Sub
Sub-DefandModNames()
'
将MyName设置为名称
将工作作为工作表
Set wks=Worksheets(“Sheet1”)”我无法重新创建该问题,但我建议在声明中更加明确,以避免歧义
例如,您的wks
可能引用名为DB_Data
的工作表,指定的范围工作正常,但ActiveWorkbook
引用的是当时处于活动状态的工作簿,而wks
所在的工作簿可能不是工作簿
通过直言不讳,你确切地知道你在处理什么
Public Sub Sample()
Dim WkBk As Excel.Workbook
Dim WkSht As Excel.Worksheet
Dim Nm As Excel.Name
Set WkBk = Application.Workbooks("Book1")
Set WkSht = WkBk.Worksheets("DB_List")
Set Nm = WkSht.Names.Add(Name:="databases", RefersTo:="=" & WkSht.Name & "!$F$7:$F$20")
Nm.Comment = "Created automatically by <sub> on " & Now()
Set Nm = nothng
Set WkSht = Nothing
Set WkBk = Nothing
End Sub
Public子示例()
将WkBk设置为Excel.工作簿
将WkSht设置为Excel.工作表
将Nm设置为Excel.Name
Set WkBk=应用程序工作簿(“Book1”)
设置WkSht=WkBk.工作表(“数据库列表”)
设置Nm=WkSht.Names.Add(名称:=“数据库”,参考:=“=”&WkSht.Name&“!$F$7:$F$20”)
Nm.Comment=“由上自动创建”&Now()
设置Nm=nothng
设置WkSht=Nothing
设置WkBk=Nothing
端接头
我无法重新创建该问题,但我建议您在声明中更加明确,以避免歧义
例如,您的wks
可能引用名为DB_Data
的工作表,指定的范围工作正常,但ActiveWorkbook
引用的是当时处于活动状态的工作簿,而wks
所在的工作簿可能不是工作簿
通过直言不讳,你确切地知道你在处理什么
Public Sub Sample()
Dim WkBk As Excel.Workbook
Dim WkSht As Excel.Worksheet
Dim Nm As Excel.Name
Set WkBk = Application.Workbooks("Book1")
Set WkSht = WkBk.Worksheets("DB_List")
Set Nm = WkSht.Names.Add(Name:="databases", RefersTo:="=" & WkSht.Name & "!$F$7:$F$20")
Nm.Comment = "Created automatically by <sub> on " & Now()
Set Nm = nothng
Set WkSht = Nothing
Set WkBk = Nothing
End Sub
Public子示例()
将WkBk设置为Excel.工作簿
将WkSht设置为Excel.工作表
将Nm设置为Excel.Name
Set WkBk=应用程序工作簿(“Book1”)
设置WkSht=WkBk.工作表(“数据库列表”)
设置Nm=WkSht.Names.Add(名称:=“数据库”,参考:=“=”&WkSht.Name&“!$F$7:$F$20”)
Nm.Comment=“由上自动创建”&Now()
设置Nm=nothng
设置WkSht=Nothing
设置WkBk=Nothing
端接头
我已经能够在Excel 2016中重现这个问题。Excel 2010和2013中都不会出现这种情况。这是.Comment实现中的一个bug
解决办法:
sRefersTo= "Sheet1!$a$3"
Set MyName = .Names.Add(sName, sRefersTo)
With MyName
.Comment = "created automatically by <sub> on " & Now()
' .RefersTo has been changed to Sheet1!'R3C1' (note the extra '')
.RefersTo= sRefersTo ' This fixes by re-setting
End With
sRefersTo=“Sheet1!$a$3”
Set MyName=.Names.Add(sName,sRefersTo)
用我的名字
.Comment=“由上自动创建”&Now()
“.RefersTo已更改为Sheet1!”R3C1'(注意额外的“”)
.referesto=sRefersTo'此问题通过重新设置进行修复
以
我已经能够在Excel 2016中重现这个问题。Excel 2010和2013中都不会出现这种情况。这是.Comment实现中的一个bug
解决办法:
sRefersTo= "Sheet1!$a$3"
Set MyName = .Names.Add(sName, sRefersTo)
With MyName
.Comment = "created automatically by <sub> on " & Now()
' .RefersTo has been changed to Sheet1!'R3C1' (note the extra '')
.RefersTo= sRefersTo ' This fixes by re-setting
End With
sRefersTo=“Sheet1!$a$3”
Set MyName=.Names.Add(sName,sRefersTo)
用我的名字
.Comment=“由上自动创建”&Now()
“.RefersTo已更改为Sheet1!”R3C1'(注意额外的“”)
.referesto=sRefersTo'此问题通过重新设置进行修复
以
插入注释会导致vba错误,但注释插入正确。
所以:在注释插入代码行之前插入“出错时继续下一步”,它就可以工作了。
你好
Rahancrau插入注释会导致vba错误,但注释插入正确。
所以:在注释插入代码行之前插入“出错时继续下一步”,它就可以工作了。
你好
Rahancrau当你试图使用它时,它不起作用,你在wks
对象中提到的工作表上吗?我只是试图从你展示的内容中重新创建它,它工作正常,这意味着你没有展示的内容中存在其他问题。尝试Shai Rado的想法“名称的引用已更改,名称不再工作”它将更改为什么?它有效吗?即,如果您使用其更改为的名称,它有效吗?或者它实际上已损坏?我只使用一个工作簿,所有工作表都在该工作簿中。ActiveWorkbook.Names.Add name:=“数据库”,referesto:=“=”&“$F$7:$F$”&j-1 ActiveWorkbook.Names(“数据库”).Comment=由“&Now()自动创建将名称更改为=Start!'R7C6':R20C6'是否在Excel或VBA中检查名称的属性?在Excel中,预先输入工作表名称是正常行为;在Excel中,如果工作表设置为使用R1C1表示法而不是A1表示法(检查文件),则可能会看到显示的内容► 选择权► 公式► 使用公式当你试图使用它,但它不起作用时,你是否在wks
对象中提到的工作表上?我只是尝试从你展示的内容中重新创建它,效果很好,这意味着你没有展示的内容中存在其他问题。试试Shai Rado的想法。”名称的引用已更改,名称不再有效“它更改为什么?它是否有效,即如果您使用名称,它更改为是否有效或它是否实际已损坏?我只使用一个工作簿,所有工作表都在该工作簿中。ActiveWorkbook.Names.Add name:=“数据库”,请参考:=“=”&“$F$7:$F”$“&j-1 ActiveWorkbook.Names(“databases”).Comment=由上自动创建“&Now()将名称更改为=Start!'R7C6”:R20C6”是否在Excel或VBA中检查名称的属性?在工作表名称前加前缀是正常行为;在Excel中,如果工作表设置为使用R1C1 no,则可能会看到显示的内容