excel - 在 Excel 文件中搜索特定列标题 - 运行时错误 91
问题描述
我正在尝试编写一些 excel vba 代码来处理某些数据列的内容。鉴于工作表有一定程度的动态变化(不时添加和删除列),我希望我的代码通过标题名称“查找”特定列,并最终返回列号。我的文件大约有 50 列。
问题是这样的:我的代码可以很好地找到我有兴趣返回列索引的许多列(标题),但是某些列“虽然明显存在”,但会返回 Nothing,因此会引发运行时 91 错误.
我可以毫无疑问地说,当我执行 .find 时,确实存在这些列(如 Comments 列)。我可以将失败的 hdr 搜索列随机更改为不同的标题名称,将其传递给代码中的函数,并且可以找到一些列,而其他列会导致运行时错误。我已经检查了特殊字符、空格、LF 等的“失败”标题。没有运气。甚至尝试使用 FindColHdrNum 函数重新排序 4 行。再次,没有运气。
希望新鲜的眼睛可以提供答案。简化代码如下,由主 Excel 工作表上的按钮触发。我在 VBA 中使用的函数不多,即使函数不生成运行时错误,它也不会返回列值,但这是一个次要问题,一旦我得到查找代码没有爆炸(返回 0)。
Sub Button119_Click()
Dim L4RankCol As Integer
Dim DecomDriverCol As Integer
Dim SupTermImpactYrCol As Integer
Dim Comments As Integer
Dim L3RankCol As Integer
L4RankCol = FindColHdrNum("L4 Rank") '<-- This works
DecomDriverCol = FindColHdrNum("Decom Driver") '<-- This works
SupTermImpactYrCol = FindColHdrNum("Support Termination Impact Yr") '<-- This works
Comments = FindColHdrNum("Comments") '<-- This does not work
End Sub
Function FindColHdrNum(strHdr As String) As Integer
Dim rngAddress As Range
Set rngAddress = Range("Headers").Find(strHdr)
FindColumnHdrNum = rngAddress.Column '<--runtime error is caused by Nothing returned
End Function
解决方案
问题原来是嵌入在标题中的虚假换行。这很奇怪,因为我不断地重新输入它,但当然,我总是从“评论”标题的“第一个字母”开始,而事实上,这个字符在它之前。感谢大家的帮助!
推荐阅读
- git - 我在哪里可以在 bitbucket 中创建分支?
- python - 在二叉搜索树中查找 2 个节点的路径
- android - 如何确保来自不同 Android 设备的 RTMP 流具有相同的 SPS/PPS?
- laravel - Laravel Forge 通配符让我们加密
- github - 下载使用可可豆荚的 github 存储库的最佳方法是什么?
- python - 从 Python 脚本调用时抑制控制台应用程序的输出
- reactjs - 酶:我怎么能模拟一个作为道具传递的函数
- php - 基于角色 WooCommerce 限制对产品的访问
- ruby-on-rails - 如何使用表单添加到 Rails 中的两个连接表
- c# - 如何在 Azure 函数中使用 bcp.exe