我正在编写一个VBA代码来检查其他文件是否为空。这些文件都有标题,所以我想检查一下" A2"单元格为空或长度为零。我的代码如下,file1,dir1,dirfile1是文件名,目录,路径。我也有一个问题是我是否需要打开文件才能访问它的" A2"细胞。
Private Sub CommandButton2_Click()
Dim file1, dir1, dirfile1 As String
file1 = "NAMBS." & Range("f3")
dir1 = Range("D11")
dirfile1 = dir1 & "\" & file1
Range("F14").Clear
If Len(Dir(dirfile1)) = 0 Then
Range("F14") = "missing"
Else
Workbooks.Open (dirfile1)
If IsEmpty(ThisWorkbook.Sheets(dirfile1).Range("a2")) Then
Range("F14") = "empty"
End If
Workbooks(file1).Close
End If
End Sub
错误消息是运行时错误' 9':下标超出范围。基本上,我想访问" A2"另一个表格中的单元格,检查是否为空,然后关闭它。
答案 0 :(得分:0)
尝试在打开文件时设置工作簿对象类型变量。
Private Sub CommandButton2_Click()
Dim file1 As String, dir1 As String, dirfile1 As String
Dim wbo As Workbook
With ThisWorkbook.ActiveSheet
file1 = "NAMBS." & .Range("f3")
dir1 = .Range("D11")
dirfile1 = dir1 & "\" & file1
.Range("F14").Clear
If Len(Dir(dirfile1)) = 0 Then
.Range("F14") = "missing"
Else
Set wbo = Workbooks.Open(dirfile1)
If IsEmpty(wbo.Sheets(1).Range("a2")) Then
.Range("F14") = "empty"
End If
wbo.Close , False
Set wbo = Nothing
End If
End With
End Sub
所有单元格范围引用都会返回到由With/End With
块确定的父级。打开的工作簿由分配给工作簿对象的wbo
变量明确引用。
如果这些文件是CSV并且它们都有一个公共标题,那么请检查文件大小是否大于仅标题文件,并且您不必打开它们以确定它们是否已填充。