2015-06-16 75 views
0

当我尝试运行此VBA宏时说“编译错误:无效或不合格的参考”。这里是宏的相关部分:VBA“编译错误:无效或不合格的参考”Application.FileDialog

带有“Excel 2003”的第一个.Filters.Add突出显示为违规部分。

我甚至尝试“上的错误继续下一步:它并没有帮助旁路错误,这让我吃惊

Option Explicit 
Sub DataProcessingExperiment7() 

' Reduces CPU intensity + macro execution time since data types can be managed 
Application.CalculationxlCalculationManual 

On Error Resume Next 
' Declare as strings, as integers, as variants, decDecimals, as Office.FileDialog 
Dim strPath, strFileN, strDirN, strCPath, strRangeNOut, strRangeNIn, strTLCorn, strBRCorn, strtemp_name As String 
Dim iStartcol, iStartrow, iColNo, iStep, iPlateNo, iRowIn As Integer 
Dim vResMatrix() As Variant 
Dim decBgrSum, decBgrVal, decVolcorr 
Dim fd As Office.FileDialog 
' MEeff = measure of efflux due to crudely purified HDL in scintillation 
' Math operations are fastest with Integers/UIntegers: https://msdn.microsoft.com/en-us/library/ae55hdtk.aspx 

' Start File Explorer to select file containing data 
Set fd = Application.FileDialog(msoFileDialogFilePicker) 
    Dim vrtSelectedItem As Variant 
    **.Filters**.Add "Excel 2003", "*.xls" 
    .Filters.Add "Excel 2003 Macro-Enabled", "*.xlsm" 
    .Filters.Add "All Files", "*." 
With fd 
    If .Show = -1 Then 
     txtFileName = vrtSelectedItem 
     MsgBox "The path is: " & vrtSelectedItem 
    End If 
' Excel 2003 is a good filter choice: Excel Viewer, OpenOffice, + Excel versions can open these files 
' If .Show = - 1 user picked at least one file 
    Next vrtSelectedItem 
    Else 
    End If 
End With 

回答

0

首先,On Error Resume Next不会避免编译错误,因为编译发生的代码,甚至开始之前一旦运行该代码运行:) On Error Resume Next才有帮助。

,因为你有不合格的引用你的错误发生时,所有三个.Filters.Add行。我看你正在尝试做的,解决它,你需要把它们在With fd声明中。请参阅下面的链接为进一步的例子:

https://msdn.microsoft.com/en-us/library/office/ff836226.aspx

+0

谢谢!修复它,现在到下一个错误(: –