Vba 限制“的数量”;命名范围“;范围内法
我正在使用以下代码:Vba 限制“的数量”;命名范围“;范围内法,vba,excel,Vba,Excel,我正在使用以下代码: Dim rng As Range Set rng = Workbooks("import sheet.xls").Sheets("import").Range("project_name,project_author,project_code,project_breaker,default_fault_ac_mcb,default_fault_ac_mccb,default_fault_dc,default_fault_acb,default_rvdrop,default
Dim rng As Range
Set rng = Workbooks("import sheet.xls").Sheets("import").Range("project_name,project_author,project_code,project_breaker,default_fault_ac_mcb,default_fault_ac_mccb,default_fault_dc,default_fault_acb,default_rvdrop,default_svdrop,default_eff,default_pfactor,default_ratio,default_freq,default_sfactor_ac,default_spfactor")
For Each cell In rng.Cells
MsgBox cell
Next cell
现在,project\u name
,project\u author
等在工作表中是不同的命名范围。问题是,当我将另一个命名范围添加到上面的列表(已定义)时,我得到一个运行时错误1004(“范围类的选择方法失败”)
可以添加到范围对象的命名范围的数量有限制吗?我找不到发生这种情况的原因,但我仍在查找 然而,这是可行的。您可以使用
UNION
Sub Sample()
Dim rng As Range, cell As Range, newRng As Range
Set rng = Sheets("import").Range("project_name,project_author,project_code,project_breaker,default_fault_ac_mcb,default_fault_ac_mccb,default_fault_dc,default_fault_acb,default_rvdrop,default_svdrop,default_eff,default_pfactor,default_ratio,default_freq,default_sfactor_ac,default_spfactor")
Set newRng = Union(rng, Sheets("import").Range("default_sid"))
For Each cell In newRng.Cells
MsgBox cell
Next cell
End Sub
更新:我找不到任何描述此行为的Microsoft文档,但经过一些实验后,我可以确认可以添加到范围对象的命名范围的最大数量是16。这种行为可以在Excel 2003、2007和2010中看到
奇怪的是,这种行为没有在Excel 2011(MAC)中复制。我测试了19个名字,结果成功了
更多更新
经过更多的测试,我发现如果您将范围命名为Name1
、Name2
、Name3
等,那么我就能够在Excel 2003-2007-2010中添加更多的命名范围。所以它必须和名字的命名有关
我向微软提交了一个bug
用于测试的示例文件:
我没有调查您的问题,但以下几点可能会给您和Sid一些关于可能解决方案的提示 如果访问
Rng.Address
,则字符串的大小有限制。我在网上找到了一些评论,声称限额是253,但我不相信这一点Rng.Address
总是在完整子范围的末尾被截断,因此返回的字符串在语法上是正确的,只是不完整。因此,限制取决于子范围的确切字符串大小
我有相反的问题。我有一张上千行的床单。我使用AutoFilter选择感兴趣的行并保存范围。但是Rng.Address
只给了我前19个左右的兴趣范围。我必须对Rng中的每个单元格使用,并组装范围字符串以获得完整字符串
您的字符串长度为255个字符。联合体中子范围的数量显然没有限制。您可以尝试将子范围单独添加到联合体中
祝你好运
PS如果您想要我的汇编范围字符串例程,欢迎使用。如果我添加了超过16个命名范围,则会出现不同的错误。它表示应用程序定义的
或对象定义的错误
。Le tme看看这个……我理解你想表达的观点,但让我困惑的是,同样的代码在Excel 2011中运行得很好。可能PC版本中有字符串限制,而Mac版本没有。PC和Mac版本之间似乎存在着奇怪的差异。这是陌生人吗?祝你调查顺利。这是陌生人吗?
不是:)我发现最糟糕的区别是,如果你在WinPC中保护你的VBA,你就不能使用相同的密码在MAC中打开VBA!!!我可以忍受MAC没有WinPC的东西。但反过来呢?太多了,我消化不了LOL@TonyDallimore很抱歉回复晚了。我不在办公室。但我无法得到你的答案…为什么子范围的数量有限制???@siddarth Rout我做了同样的事情,但没有在代码中完成。我在excel中创建了范围…你指的是代码的哪一部分?你有没有试着给命名范围起个小名字呢
?实际上,我在excel中创建了一个新的命名范围,它包含了我想检查的所有范围。是的,现在它工作了,但现在只有一个范围(问题仍然是,微软正在限制可以在range方法中输入的命名范围的数量,不是吗?)不,微软没有限制命名范围的数量
,而是限制名称中的字符数
。请参阅上面帖子中我的评论更多更新
。