gpt4 book ai didi

excel - 尝试在 Excel VBA 中设置 RefersToRange 属性时出现问题

转载 作者:行者123 更新时间:2023-12-04 22:10:39 27 4
gpt4 key购买 nike

今天我正在帮助一位 friend 解决 Excel 2007 中的 VBA 问题,我们遇到了一个我认为我过去曾遇到并解决过的问题。更改名称所指的范围是一个问题。

在我 friend 的主工作表中,在 B7 中,她从源是命名范围 CAT_LOOKUP 的列表中进行数据验证。她想运行一个子程序来过滤另一个工作表上的表,以仅显示与 B7 中的值相对应的行,然后将这些行用作该工作表上另一个单元格中的验证源。

这是我们使用的 VBA 的相关部分:

Dim strCAT As String
Dim strACT As String
Dim sh As Worksheet
Dim rng As Range
Dim rngDest As Range

If Cells(7, 2) <> "" Then
strCAT = Cells(7, 2).Value

Sheets("CAT LOOKUP").Range("$A2:$C393").AutoFilter Field:=1, _
Criteria1:=strCAT

Set sh = Sheets("CAT LOOKUP")
Set rng = sh.Range("B34:B56")
rng.ClearContents
Set rng = sh.Range(sh.Range("B1"), sh.Range("B1").End(xlDown))
rng.Copy
Set rngDest = sh.Range("B34")
rngDest.PasteSpecial

ActiveWorkbook.Names("CAT_LOOKUP").RefersToRange = _
sh.Range(sh.Range("B35"), sh.Range("B35").End(xlDown))

Else
Set sh = Sheets("CAT LOOKUP")
Set rng = sh.Range("B34:B56")
rng.ClearContents

Sheets("Ad Hoc Request").Select
End If

CAT_LOOKUP 已定义。运行此代码时,CAT_LOOKUP 范围被清除,范围的定义保持不变。

我在我用过的旧项目的笔记中发现了 RefersToR1C1而不是 RefersToRange ,所以我将该行更改为:
    ActiveWorkbook.Names("CAT_LOOKUP").RefersToR1C1 = _
"='CAT LOOKUP'!R35C2:R" & sh.Range("B35").End(xlDown).Row & "C2"

并且代码按预期工作,重置命名范围,以便相应的数据验证正常工作。

这仅仅是 RefersToRange 实现中的一个错误吗? ,还是我们使用它的方式有问题?

最佳答案

RefersToRange 是只读的,至少在 XL 2003 和可能在 2007 中。

关于excel - 尝试在 Excel VBA 中设置 RefersToRange 属性时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5668656/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com