2016-12-28 4 views
1

私はVBAに非常に錆びているので、これはVBAに精通している人にとっては簡単な修正になると期待しています。私はIFERROR関数にエラーが発生した場合に0、 ""、またはn/aを返すように、以下の式を修正したいと思います。現在、私がオンラインで見つけたコードは完璧ですが、n/aを返しません。誰かがすぐにどのようにコードのブロックを追加する方法を知っている場合は、3番目のオプションは、それを感謝するサイクルを許可します。コードがあるからwww.TheSpreadsheetGuru.com答えは、次のコードブロックにEnd_Stringの値を変更することにあるVBAラップIFERROR変更

Sub WrapIfError_v2() 

'PURPOSE: Add an IFERROR() Function around all the selected cells' formulas. _ 
      Also handles if IFERROR is already wrapped around formula. 
'SOURCE: www.TheSpreadsheetGuru.com 

Dim rng As Range 
Dim cell As Range 
Dim AlreadyIFERROR As Boolean 
Dim RemoveIFERROR As Boolean 
Dim TestEnd1 As String 
Dim TestEnd2 As String 
Dim TestEnd3 As String 
Dim TestStart As String 
Dim MyFormula As String 
Dim x As String 

'Determine if a single cell or range is selected 
    If Selection.Cells.Count = 1 Then 
    Set rng = Selection 
    If Not rng.HasFormula Then GoTo NoFormulas 
    Else 
    'Get Range of Cells that Only Contain Formulas 
     On Error GoTo NoFormulas 
     Set rng = Selection.SpecialCells(xlCellTypeFormulas) 
     On Error GoTo 0 
    End If 

'Get formula from First cell in Selected Range 
    MyFormula = rng(1, 1).Formula 

'Create Test Strings To Determine if IFERROR formula has already been added 
    TestEnd1 = Chr(34) & Chr(34) & ")" 
    TestEnd2 = ",0)" 
    TestStart = Left(MyFormula, 9) 

'Determine How we want to modify formula 
    If Right(MyFormula, 3) = TestEnd1 And TestStart = "=IFERROR(" Then 
    Beg_String = "" 
    End_String = "0)" '=IFERROR([formula],0) 
    AlreadyIFERROR = True 
    ElseIf Right(MyFormula, 3) = ",0)" And TestStart = "=IFERROR(" Then 
    RemoveIFERROR = True 
    Else 
    Beg_String = "=IFERROR(" 
    End_String = "," & Chr(34) & Chr(34) & ")" '=IFERROR([formula],"") 
    AlreadyIFERROR = False 
    End If 

'Loop Through Each Cell in Range and modify formula 
    For Each cell In rng.Cells 
    x = cell.Formula 

    If RemoveIFERROR = True Then 
     cell = "=" & Mid(x, 10, Len(x) - 12) 
    ElseIf AlreadyIFERROR = False Then 
     cell = Beg_String & Right(x, Len(x) - 1) & End_String 
    Else 
     cell = Left(x, Len(x) - 3) & End_String 
    End If 

    Next cell 

Exit Sub 

'Error Handler 
NoFormulas: 
    MsgBox "There were no formulas found in your selection!" 

End Sub 
+0

あなたが何をしているのかわからない - 該当しない***は***エラーです。 – Comintern

+0

N/Aは文字列 "N/A"のようにエラーではありません... – PacMan

答えて

0

:例えば

'Determine How we want to modify formula 
    If Right(MyFormula, 3) = TestEnd1 And TestStart = "=IFERROR(" Then 
    Beg_String = "" 
    End_String = "0)" '=IFERROR([formula],0) 
    AlreadyIFERROR = True 
    ElseIf Right(MyFormula, 3) = ",0)" And TestStart = "=IFERROR(" Then 
    RemoveIFERROR = True 
    Else 
    Beg_String = "=IFERROR(" 
    End_String = "," & Chr(34) & Chr(34) & ")" '=IFERROR([formula],"") 
    AlreadyIFERROR = False 
    End If 

、代わり

& Chr(34) & Chr(34) & ")" 

あなたは代用することができます:

& "NA())" 

あなたが探していたものに近いですか?

関連する問題