我在Excel VBA中编写了一个相当长的宏。我想使用命名范围,而不是在宏中指定它。此宏旨在用于长期使用。如果范围由另一个用户改变会发生什么?我如何调整我的代码,使我的命名范围可以适应不断变化的职位?使用更改命名范围Excel VBA
0
A
回答
2
我(个人)讨厌命名范围。特别是,当您从一个文件复制或粘贴表单/范围到另一个文件时,您总是会遇到死链接或复制到不再工作的命名范围或被重命名(因为它们已经存在于该文件中)。
我对这个解决方案是以下两种之一:
(1)我奉献在VBA某一部分(甚至模块)在全局变量声明我的范围。这与每个子开始处的所有变量的Dim
非常相似。
'*********************************************************
'** Declaring all ranges and where to find which data
'*********************************************************
Dim rngNamedRangeName As Range
Sub SetupAllGlobalVariables()
Set rngNamedRangeName = ThisWorkbook.Worksheets(1).Range("A1:C10")
End Sub
'*********************************************************
'** After that all your normal subs follow and whenever
'** necessary you can call the above to get your ranges
'*********************************************************
Sub ExampleCodeToFormatYourRanges()
Call SetupAllGlobalVariables
With rngNamedRangeName
.Interior.ColorIndex = 36
End With
End Sub
(2)然而,我的优选的第二解决方案是有一个单独的very hidden
片,其中我参考/链接的所有范围再次(这是很重要的我)。所以,基本上,我在这张单独的表格中再次显示所有“重要”数据。这将是你的命名范围。但是没有人允许触摸这张表格(这就是为什么它隐藏起来的原因很)。如果您的任何范围被移动或改变,那么很容易重新链接此隐藏表上的范围与其他表。然而,在隐藏表单上,所有数据仍处于同一位置,并允许您对VBA中的所有范围进行硬编码(仅从隐藏表中获取)。
即使非VBA程序员通常可以用第二种方法修复这些问题。用第一种方法,你可能总是需要有VBA技能的人来修复它。
请注意,上述不是唯一的解决方案,也不是最好的解决方案。但我可以肯定地说,即使对于大公司来说,这已经被证明是一个可用的解决方案。
相关问题
- 1. Excel:命名范围与VBA
- 2. Excel Interop - 如何更改命名范围
- 3. vba excel set动态命名范围
- 4. Excel的VBA命名范围行和
- 5. 在范围函数中引用命名范围(Excel-VBA)
- 6. Excel VBA:使用命名范围确定上次使用的行
- 7. Excel中的命名范围
- 8. 使用命名范围的多行VBA
- 9. 使用VBA在Excel中删除损坏的命名范围
- 10. 如何更改命名区域范围
- 11. VBA宏命名范围
- 12. 如何使用VBA在Excel中更改图表的范围?
- 13. Excel VBA命名范围与动态创建名称
- 14. 通过C#设置Excel命名范围?
- 15. 用Excel快速命名范围用C#
- 16. Excel VBA - Vlookup&范围
- 17. Access vba excel范围
- 18. Excel的VBA - 范围
- 19. 更改命名范围参考
- 20. excel命名范围副本从表到
- 21. 在Excel中引用命名范围
- 22. 使用命名范围
- 23. excel vba范围相对偏移范围
- 24. 使用Excel VBA查找范围
- 25. 范围在Excel中使用VBA
- 26. 在Excel中比较2个动态命名范围Vba
- 27. Excel VBA:命名范围+字符串值作为验证列表?
- 28. excel vba按特定顺序查找命名范围
- 29. 将Excel命名范围读入数组(VBA)
- 30. Excel VBA按特定列对命名范围进行排序
感谢您的回复。但是,第二种解决方案可能会牺牲多用户的可用性以及宏和电子表格的可移植性。当你隐藏电子表格时,它最终会飘浮在内存之外。 – Dombey
在某些时候,你必须告诉VBA在哪里找到数据,直到你不把它放在结构化数据库服务器(SQL)上,你必须在某处某处对引用进行硬编码。所以,现在你有三种选择,你可以评估它们并且尽可能多地尝试它们。我(亲自)已经这么做了很长时间,并得出了上述结论。然而,不同的设置/参数可能导致不同的结论。所以,尽情地尝试一下并比较它们。可能有人甚至可以添加另一个切实可行的解决方案。 – Ralph