2010-12-08 102 views
2

我相信在Excel中使用全局范围名称可能更好。在Excel 2003中,当使用(我将调用的)A列左上角的名称输入框创建范围时,我知道它们是全局的。我知道这是可能的,尽管在大多数情况下,不可能在具有相同名称的工作表上本地存在一个范围,这会在Excel和VBA中导致非常混乱的行为?令人信服的在Excel中使用局部范围的参数在全局范围内

我已经谷歌搜索,没有找到可能有关该主题的文章(我可能不得不在这之后写一篇自己的博客)。我想知道其他专业Excel开发人员在做什么以及为什么?

回答

1

我认为全球与本地问题取决于您处理的用户类型以及您构建的解决方案类型。 Charles可能会与用户大量投资范围和公式的解决方案合作;我深入VBA代码。这里所要求的方法有着天壤之别。我不会说查尔斯是错的 - 他可能适合他开发的解决方案。但是他错了me

我使用了很多模块化解决方案,这些解决方案以编程方式在不同的工作表上生成相同的范围。我广泛使用名称是因为它有助于限制在代码中使用硬编码的范围引用,并且还提供了一种可以在不同模板之间运行的通用解决方案的方法。我很少使用标准范围下拉式下一个公式栏创建范围 - 创建本地名称时,骡子会产生一个正确的疼痛。

查尔斯关于全球/本地混淆的观点并不适用于我,因为它全部是程序化的,这种错误将会是一个错误,而不是用户的挫败感。他们没有看到这些范围。

在用户与名称交互的情况下,我希望Excel以不同的方式签署全局名称以避免用户混淆。根据我的经验,如果我已经定义了范围,用户不会遇到麻烦。他们不必担心本地/全球问题,因为名称已经存在。

让我们不要涉及范围名称是相对与绝对的问题......这是另一个用户混淆蠕虫的可能!

+0

我也来自VBA重环境,我认为我会说本地名称比全局名称更可取。我必须做一个关于它的博客文章,看看人们认为一旦我合理化后会怎么想。感谢您的意见 – FinancialRadDeveloper 2010-12-23 14:14:39

2

关于使用本地名称的可取性,意见不同。
一方面,希望尽可能限制范围,所以使用本地。
另一方面,如果您有重复的本地名称(同一名称存在于多张纸上),错误的可能性会迅速增加,并且如果您没有重复的本地名称,则使用它们没有多大意义。另外,很容易无意中使用与本地名称相同的名称创建一个全局名称:这会导致易混淆且容易出错(有些人会说错误)Excel/VBA行为。
免费提供的名称管理器插件(由Jan-Karel Pieterse和我自己撰写)使得本地名称的处理变得更容易,允许在本地和全局之间轻松转换,改进了本地名称的可见性,过滤和标记重复的全局/本地名称。
从VBA的角度来看,我很少使用它们,但从公式的角度来看,偶尔有时候本地名称是有用的。

1

您的工作簿是一个商业应用程序,表单是模块。想想它就像任何软件问题。

你想尽可能多地限制你的名字范围:

  1. 最大限度地减少意外和不可见的滥用。
  2. 避免担心之前是否使用过某个名称。
  3. 为了尽量减少搜索“什么是......改变了这个?”的范围
  4. 因为它不花你任何东西,全局变量不会赋予任何好处。

当地名跨表引用是额外的工作,真的不太可能是偶然的,所以我必须与当地的重复名称增加了出错的可能性查尔斯不同意。

有一个原因,当我们发明结构化编程时,我们也摆脱了空白共同。理由同样适用于电子表格。

有一件事可以帮助您使电子表格模型变得更加强大:当您想要声明一个全局,或者您正在做一个跨表参考时,请考虑创建一个函数还是更好类。情况并非总是如此,但我发现,通过封装“有趣”的计算,我可以减少复杂性。

0

这是一个观点:不同的用户会有不同的偏好。

我使用全局名称,因为我需要一个方便且稳定的标签来标识整个工作簿中的范围 - 在整个项目中的任何工作表和VBA流程的公式中。

本质上,我将一个命名的范围视为一个全局变量,并且是稳定横向过程的基本工具。

本地名称用于在具有相同名称的不同范围内声明不同范围,这是混淆和错误的秘诀。话虽如此,乔尔古德温提供了一个很好的理由使用本地名称:模块化代码(如模板生成器),在不同的工作表上做同样的事情。我已经构建了完全相同的模板生成器。

我会更多地使用本地名称,如果有更好的接口可用于查看它们并在VBA中使用它们 - JKP的名称管理器在我工作的地方有很多用途,但它不能消除设计中的混淆和错误在微软的实施中。