2017-12-18 10 views
0

ワークシート名がチェックボックスに関連付けられているかどうかを確認するブール関数があります。私はそれが真実である一方、エラーからのチェックボックスを停止し、コードを持っていますが、それが偽の場合、ブール値は私に13ブール関数締付け

Function WorksheetExists(sheetName As String) As Boolean 
    WorksheetExists = Evaluate("ISREF('" & sheetName & "'!A1)") 
End Function 

エラーを与えるようになしがある場合、私は何をしたいのか、それを設定されています値は、単に関数が終了します。これは可能ですか?

+0

' sheetExists = Not IsError(Evaluate( "Sheet1!A1")) ' – JohnyL

+0

私は混乱しています。このコードを現在のコードでどのように実装すればよいですか? –

+2

'Function WorksheetExists(sheetName $)ブール値:WorksheetExists = IsErrorではない(Evaluate(sheetName&"!A1 ")):End Function' – JohnyL

答えて

2

引数として渡される値をテストできます。 SHEETNAMEとして渡された文字列の長さが0の文字

パフォーマンスに興味があるなら
Function WorksheetExists(sheetName As String) As Boolean 

    If Len(sheetName) = 0 Then Exit Function 
    WorksheetExists = Evaluate("ISREF('" & sheetName & "'!A1)") 

End Function 
0

ある場合は、以下はFalse(デフォルト値)に機能を設定し、これは約30倍高速に実行

Function WorksheetExists(sheetName As String) As Boolean 
    Dim ws As Worksheet 
    On Error GoTo EH 
    Set ws = ActiveWorkbook.Worksheets(sheetName) 
    WorksheetExists = True 
Exit Function 
EH: 
    WorksheetExists = False 
End Function 
関連する問題