首页 > 解决方案 > 如何在没有#NA错误的情况下传递不同维度的命名范围

问题描述

我的工作簿的结构如下:有 UI 表、计算表和数据库表。

当用户“保存”文件时,程序只是将数据库表的副本保存到新文件中。这样做是为了让用户不会覆盖主文件。当用户“打开”一个文件时,该文件被检索,数据通过命名范围从保存的文件传递到主文件中的数据库表。

为了填充这个数据库表,我通过以下代码从 UI 和计算表中传递值:

ws_DB.range("rngName_UI").value2 = ws_UI.range("rngName_UI").value2
ws_DB.range("rngName_Calc").value2 = ws_Calc.range("rngName_Calc").value2

这个系统的唯一问题是,如果我需要输出新信息,我的命名范围可能会随着时间的推移获得新的行/列。这意味着,如果我使用版本 1 保存了一个数据库表,并且某个命名范围“rng_A”有 3 列,但随后我在版本 2 中检索到它并且“rng_A”有 5 列,那么 Excel 会显示最后 2 列带有 #NA错误。

有没有一种方便的方法可以避免这个问题?到目前为止,我最好的想法是我可以获得源和目标范围的行和列,然后只传递到 nRows 和 nCols 的最小值。有更好的解决方案吗?

标签: excelvbanamed-ranges

解决方案


推荐阅读