excel - 在数据验证中使用 INDIRECT
问题描述
我想在 VBA 中的数据验证中应用 Excel 的 INDIRECT 函数。
我正在使用 VBA 填充数据验证条件,并使用 INDIRECT 通过 HLOOKUP 从另一个命名范围中找到适当的工作簿命名范围。
我认为我的问题在于 VBA 代码的语法。我无法弄清楚双引号的正确位置。这将返回错误 400 通知。
我有以下内容(为清楚起见,省略了功能代码部分)。HLOOKUP 引用的列 F 包含一个用户可选择的值,而 DepartmentRef 是一个命名范围:
Sub AddNewRoom()
Dim targetRow As Integer
targetRow = Range("EndRoomData").Row
With Worksheets("RoomData")
With .Range("G" & targetRow).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=indirect(hlookup(F" & targetRow & ",DepartmentRef,2,false))"
End With
End With
End Sub
当我更改验证公式以删除代码变量时,代码正常运行:
With .Range("G" & targetRow).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=indirect(hlookup(F7,DepartmentRef,2,false))"
End With
解决方案
不要使用直接的“名称”单元格引用,但请尝试:
Formula1:="=INDIRECT(HLOOKUP(" & Worksheets("RoomData").Cells(targetRow, 6).Address(False, False) & ",DepartmentRef,2,FALSE))"
推荐阅读
- python-3.x - Pandas:为“宽”数据集组合行的更好方法?
- c# - 访问 Internet Explorer 下载列表
- scala - 懒惰地遍历函数集合,在第一次成功时短路
- python - DJANGO FORMS.py 'RawQuerySet' 对象没有属性 'all'
- vb.net - 如何为按钮创建键盘快捷键?
- javascript - 如何在 Dynamodb 中存储对象?
- java - 为什么我的控制台在 Eclipse 上打印空白/与背景颜色相同?
- python - SVD 函数返回维度不兼容的矩阵
- node.js - 如何部署 Nodejs 后端并将其链接到我的 GitHub React 应用程序?
- exiftool - Exiftool:想要使用 -w 命令输出到一个文本文件