excel - VBA函数分配空字符串而不是范围值
问题描述
我正在使用以下函数查看表的第 1 列 ( rngSearch
) 并在第 2 列中返回相应的值,基本上反映了VLOOKUP
. 它通常按预期工作,除非它没有。它有时会返回 avbNullString
而不是所需的字符串值。
Function get_short_string(rngSearch As Range, strSearch As String) As String
get_short_string = vbNullString
For i = 1 To rngSearch.Rows.Count
If LCase(rngSearch(1)(i)) = LCase(strSearch) Then
get_short_string = rngSearch(2)(i)
Exit Function
End If
Next i
End Function
我已经逐步完成了该功能并将其缩小到这一行:
get_short_string = rngSearch(2)(i)
当我? rngSearch(2)(i)
此时进入即时窗口时,我得到了所需的输出字符串。然后当我执行时,该行get_short_string
被分配了一个vbNullString
. 至少我是这么认为的,当我get_short_string
在执行工具提示显示的行后将鼠标悬停在get_short_string =
没有空字符串的情况下""
。我也尝试过rngSearch(2)(i).Value
,rngSearch(2)(i).Value2
结果相同。
编辑:谢谢你的回答。问题似乎不在代码中,而在于正在处理的字符串。我将用 VlookUp 替换这个自定义函数并进一步调查。
EDIT2:按照这里的要求,是原始德语形式的表格样本:
+----------------------------------------------------------+------------------+
| Internes Projekt nach CRM | Kurzname |
+----------------------------------------------------------+------------------+
| Urlaub | geplante Abwesenheit 2020 | URLAUB |
| Interne Projekte 2020 | INTERNE PROJEKTE |
| Akquise 2020 | AKQUISE |
| Unterstützung (nicht fakturierbar) anderer Projekte 2020 | andere |
| Verwaltung | Arbeitsorganisation 2020 | VERWALTUNG |
| Interne Projekte 2019 | INTERNE PROJEKTE |
| Unterstützung Team (intern) | andere |
+----------------------------------------------------------+------------------+
在第 2 行中查找确切的字符串时Urlaub | geplante Abwesenheit 2020
,代码正确识别第 2 行。当我使用? rngSearch(2)(i)
它输出的即时窗口时URLAUB
,该函数返回一个空变量。
解决方案
我无法确定您的代码到底在哪里出错,但下面的函数在语法上更清晰,在执行上也更健壮。我不认为它会给你同样的错误。
Function GetShortString(rngSearch As Range, _
strSearch As String) As String
Dim R As Long
With rngSearch
For R = 1 To .Rows.Count
If StrComp(.Cells(R, 1).Value, strSearch, vbTextCompare) = 0 Then
GetShortString = .Cells(R, 2).Value
Exit Function
End If
Next R
End With
End Function
但是,循环遍历一个范围需要时间。如果您对速度感兴趣,请改用以下功能。
Function ShortString(rngSearch As Range, _
strSearch As String) As String
ShortString = Application.VLookup(strSearch, rngSearch, 2, False)
End Function
推荐阅读
- constraints - Pyomo 约束 > 100000 或 0
- python - 如何将字符串列表向右对齐?
- swift5.1 - Swit 5.1 将 CoreData 添加到现有项目但我收到此错误
- c# - Xamarin:构建时出错 -> 文件路径无效 'obj\Debug\90\res\views\layouttest.xml'
- python - NumPy 数组赋值期间无限的 __getitem__ 调用
- python - sqlite3.IntegrityError:数据类型不匹配
- google-analytics - 客户 ID 不正确
- java - 如果适用,使用子类的方法
- php - php 表值显示不正确
- matlab - 在气候数据运算符中使用 timeselavg 时出错