excel - 目录中不存在文件时的 VBA 错误处理
问题描述
如果工作簿存在于基于单元格条目的特定文件夹中,我已经编写了一些代码来启动它们。当条目为空白和/或文件中不存在该条目时,我无法显示错误消息。我尝试使用On Error GoTo MsgBox,但即使输入正确,也会显示 MsgBox。
Private Sub Worksheet_Change(ByVal Target As Range)
'PART NUMBER DECLARATIONS
Dim part1 As Long
Dim part2 As Long
'Variable Assignments
part1 = 123
part2 = 234
If Target.Address = "$G$9" Then
varCellvalue = Range("G9").Value
Workbooks.Open "C:\Users\USERX\Desktop\Test File\" & varCellvalue & ""
ElseIF varCellvalue <> Range("G9").Value Then
MsgBox" Invalid Part Number"
End If
End Sub
解决方案
另一种方法不是使用错误处理,而是简单地检查文件是否存在,然后做出适当的响应:
Private Sub Worksheet_Change(ByVal Target As Range)
'PART NUMBER DECLARATIONS
Dim part1 As Long
Dim part2 As Long
'Variable Assignments
part1 = 123
part2 = 234
If Target.Address = "$G$9" Then
varCellvalue = "C:\Users\USERX\Desktop\Test File\" & Range("G9").Value & ""
If Dir(varCellvalue) <> "" Then
Workbooks.Open varCellvalue
Else
MsgBox "The file does not exist"
End If
End If
End Sub
我认为这种方法更干净,也许更直观。
推荐阅读
- ios - 应用重启后未收到 FCM 通知
- eslint - 括号问题与 eslint 一起使用更漂亮
- reactjs - Babel-jest 不会在 node_modules 中转译 JSX
- c++ - 包装类设计和依赖注入
- elasticsearch - Elasticsearch/Nest 性能问题
- c - PIC I2C 时钟配置
- ios - 如果应用程序在 iOS 应用程序的前台,Cordova 插件 Firebase 没有收到推送通知
- angular - 通过 Jenkins 部署 dockerized Angular 应用程序的问题
- c# - 如何将 Autofac 与 Asp.net core 2.2 集成
- c# - Type.InvokeMember 在扩展方法中抛出“COMException:类型不匹配”