Arrays VBA函数告诉机器不要显示某些变量

Arrays VBA函数告诉机器不要显示某些变量,arrays,excel,vba,exists,Arrays,Excel,Vba,Exists,我想知道如果VLookup函数找不到任何东西,是否有办法告诉excel不要显示一些变量 我的代码大致是这样做的:通过查找另一个excel工作簿中的一些数字,比较上一年的值,并将差异显示在另一个电子表格中,所有这些都在一个大的合并单元格中。 我的代码中的一些摘录: cashO = Val(Application.VLookup("cash" & "*", Workbooks("creditreport.csv").ActiveSheet.Range("A1:F199"), 4, False

我想知道如果VLookup函数找不到任何东西,是否有办法告诉excel不要显示一些变量

我的代码大致是这样做的:通过查找另一个excel工作簿中的一些数字,比较上一年的值,并将差异显示在另一个电子表格中,所有这些都在一个大的合并单元格中。 我的代码中的一些摘录:

cashO = Val(Application.VLookup("cash" & "*", Workbooks("creditreport.csv").ActiveSheet.Range("A1:F199"), 4, False))
然后差
cash=Round(cashN-cashO,0)

然后显示:
MergedCell.Value=“现金增加”&Cash

但是,如果首先找不到现金,我不想显示现金(如果是这种情况,则在找不到现金和更改为空时,cash=0)

我想用我所有的变量(现金,…)创建一个数组,然后循环遍历它。但是我在网上找不到任何关于“如果找不到,不要显示任何内容”的内容


最好的方法是,

您可以使用if-else语句检查现金的价值,并在现金有价值时写入价值,如果是这样的话,还可以写入一些其他消息,如“无变化”或“无以前的价值”

if cash = 0
    MergedCell.Value = "No Change"
Else
    MergedCell.Value = "Cash increased by" & cash
End If

我希望我能理解您的意思,您的意思是
VLookup
没有找到与“现金”匹配的项,如果是这种情况,您需要进行错误处理。 如果是这种情况,请尝试以下代码:

Sub VLookup_Test()

On Error Resume Next    
cashO = Val(Application.VLookup("cash" & "*", Workbooks("creditreport.csv").ActiveSheet.Range("A1:F199"), 4, False))
If Err.Number <> 0 Then
    MsgBox "cashO not found" '
    ' Do your actions if cashO not found with VLookup

End If
On Error GoTo 0

End Sub
Sub-VLookup_测试()
出错时继续下一步
cashO=Val(Application.VLookup(“cash”和“*”,工作簿(“creditreport.csv”).ActiveSheet.Range(“A1:F199”),4,False))
如果错误号为0,则
MsgBox“未找到现金”'
“如果在VLookup中未找到cashO,请执行您的操作
如果结束
错误转到0
端接头

或者您可以检查函数是否返回错误:

if iserror(Application.VLookup("cash" & "*", Workbooks("creditreport.csv").ActiveSheet.Range("A1:F199"), 4, False)) then
    cash = 0
else
    cashO = Val(iserror(Application.VLookup("cash" & "*", Workbooks("creditreport.csv").ActiveSheet.Range("A1:F199"), 4, False))

    ....other statements for whatever...
end if

谢谢你的回答!如果我不希望vba在其他文档中找不到cash时显示cash,那么我认为我需要将您的
cash=0
替换为类似“cash=”“`的内容。我建议避免使用相同变量的混合数据类型,即,我猜您已经将cash定义为整数或其他数字类型。“”是空字符串,不是数字。如果您不想只处理If语句中的输出,而是以后再处理,那么可以使用一个布尔值cashExists,并在else部分使用“cashExists=False”代替“cash=0”和“cashExists=True”。然后在if之后,您可以执行“if cash exists Then….else….end if”来格式化代码中稍后的输出。