VBA Excel: 如何获取命名区域的行数和列数?
VBA Excel: how to get row and column number of named range?
我遇到了以下问题,这让我抓狂!我在 Excel 中开发一个大型数据库程序,我正在尝试检索特定命名范围的行号和列号。以下代码用于工作(temp_entryvalue 是范围的名称):
temp_datafile_row = Workbooks(datafile_filepath).Worksheets(temp_datafile_worksheet).Range(temp_entryvalue).Row
temp_datafile_col = Workbooks(datafile_filepath).Worksheets(temp_datafile_worksheet).Range(temp_entryvalue).Column
我得到了 ole' Error 1004。稍微排除故障,这里的问题似乎是与 temp_entryvalue 关联的范围隐藏在 excel sheet 中,但是名称已定义,并且分配了行号和列号。
然而,这一切都曾经奏效。直到我改变了一件事:而不是直接写入数据库 excel worksheet,我首先将所有内容放在一个数组中,这样只有在最后我才打开数据库 worksheet并复制所有数据。在我这样做之前,一切都可以正常工作。
那么我该如何解决这个问题呢?如何检索隐藏的命名范围的行号和列号,但是否有关联的行号和列号?
谢谢。
你问的这个问题很奇怪。但是,通常获取隐藏工作表的列和行应该是微不足道的,因此我想你在某处犯了一些小错误。
打开一个新的 Excel 文件并尝试此代码:
Option Explicit
Public Sub TestMe()
Dim tempEntryvalue As Range
Set tempEntryvalue = Worksheets(1).Range("A1:Z10")
Worksheets(1).Visible = xlVeryHidden
Debug.Print tempEntryvalue.Row
Debug.Print tempEntryvalue.Column
End Sub
或者,如果您的意思是 NamedRange
(如果将范围声明为变量,您的代码看起来就像这样),那么这可能是最简单的解决方案:
Public Sub TestMe()
Debug.Print [temp_entryvalue].Row
Debug.Print [temp_entryvalue].Column
Debug.Print Range("temp_entryvalue").Row
Debug.Print Range("temp_entryvalue").Column
End Sub
我遇到了以下问题,这让我抓狂!我在 Excel 中开发一个大型数据库程序,我正在尝试检索特定命名范围的行号和列号。以下代码用于工作(temp_entryvalue 是范围的名称):
temp_datafile_row = Workbooks(datafile_filepath).Worksheets(temp_datafile_worksheet).Range(temp_entryvalue).Row
temp_datafile_col = Workbooks(datafile_filepath).Worksheets(temp_datafile_worksheet).Range(temp_entryvalue).Column
我得到了 ole' Error 1004。稍微排除故障,这里的问题似乎是与 temp_entryvalue 关联的范围隐藏在 excel sheet 中,但是名称已定义,并且分配了行号和列号。
然而,这一切都曾经奏效。直到我改变了一件事:而不是直接写入数据库 excel worksheet,我首先将所有内容放在一个数组中,这样只有在最后我才打开数据库 worksheet并复制所有数据。在我这样做之前,一切都可以正常工作。
那么我该如何解决这个问题呢?如何检索隐藏的命名范围的行号和列号,但是否有关联的行号和列号?
谢谢。
你问的这个问题很奇怪。但是,通常获取隐藏工作表的列和行应该是微不足道的,因此我想你在某处犯了一些小错误。
打开一个新的 Excel 文件并尝试此代码:
Option Explicit
Public Sub TestMe()
Dim tempEntryvalue As Range
Set tempEntryvalue = Worksheets(1).Range("A1:Z10")
Worksheets(1).Visible = xlVeryHidden
Debug.Print tempEntryvalue.Row
Debug.Print tempEntryvalue.Column
End Sub
或者,如果您的意思是 NamedRange
(如果将范围声明为变量,您的代码看起来就像这样),那么这可能是最简单的解决方案:
Public Sub TestMe()
Debug.Print [temp_entryvalue].Row
Debug.Print [temp_entryvalue].Column
Debug.Print Range("temp_entryvalue").Row
Debug.Print Range("temp_entryvalue").Column
End Sub