0

我在excel的宏中有一个代码。在 Sheet4 中

在部分代码中我有:

Call functionA("file.csv", "A3", "Sheet2")

如果宏不能执行隐藏列的功能,我需要它

我打算使用以下代码,但不起作用

On Error Resume Next
    all functionA("file.csv", "A3", "Sheet2")
Columns("Sheet3!V:V").EntireColumn.Hidden = True

首先永远不要隐藏特定工作表的列。如果有错误继续,它工作正常。问题在于我打算隐藏该列。仅当出现错误时我才需要隐藏该列

问题是我读了一些 csv 文件。函数A将文件加载到excel。如果文件不存在。excel 必须继续并隐藏工作表 3 的列 V,因为在工作表 3 的 V 中,我有一些我计算的文件不存在的日期

4

3 回答 3

1

那么 如何使用“On Error”来处理宏中的错误呢?你可以看看good-patterns-for-vba-error-handling我经常使用宏记录器来做一些我在录制时不知道的事情,然后看看生成的宏代码。

Sub MyMacro()

    On Error GoTo ErrorHandler
    . . .
    Exit Sub
ErrorHandler:
    . . .
    Resume <or Exit Sub>
    . . .
End Sub

隐藏列

Sub HideColumn()
    Dim colIndex As Integer
    colIndex = CInt(InputBox("Index of column to hide"))
    Cells(1, colIndex).EntireColumn.Hidden = True
End Sub
于 2013-06-07T16:41:17.440 回答
1

好的,我在这里做了一些假设,但这应该会让你走上正确的道路:

Option Explicit

Sub a()

    If FileThere("c:\test\file.csv") Then
        Call functionA("file.csv", "A3", "Sheet2")
        {WHATEVER ELSE NEEDS TO HAPPEN AFTER THAT functionA CALL GOES HERE}
    Else
        Sheet3.Range("V:V").EntireColumn.Hidden = True
        Exit Sub
    End If

End Sub


Function FileThere(FileName As String) As Boolean
     If (Dir(FileName) = "") Then
        FileThere = False
     Else:
        FileThere = True
     End If
End Function

Sub functionA(f1 As String, f2 As String, f3 As String)
    {WHATEVER YOU NEED TO DO GOES HERE}


End Sub
于 2013-06-07T16:51:43.880 回答
0

使您的函数返回成功值。

所以:这是你的功能

Function functionA (Byval Cvsfiel As string, byVal SheetName as string) as integer

    On error go to Err
    ' insert your code here
    ....
    ...
    ....

    return 0 '0 means function was successfull

    Exit function

    Err: 

    Return -1 ' -1 means function did not run successfullt

End Function 

现在您的代码将是这样的:

 Dim result as integer

    result=functionA("file.csv", "A3", "Sheet2")

    If result=-1 then  'means if error
    Columns("Sheet3!V:V").EntireColumn.Hidden = True

    End If
于 2013-06-07T16:52:09.680 回答