| 
    
     |  | ももたんさん、こんにちは。 
 あたくし作のツールバーソフト「ピカつーる」の機能です。よかったら、お試し下さい。
 エラーの場合は、セル色と文字色を同じにしてなんも起きてない様に見せてます。
 
 Sub 演算エラー非表示()
 
 Dim 初期セル As Range
 Dim セル As Range
 Dim 設定数 As Integer
 Dim I As Integer
 Dim 数式 As String
 Dim FrgA As Integer
 Dim FrgB As Integer
 Dim カウント As Long
 
 On Error GoTo errout
 
 メッセージ = "セルの値が↓の様な演算エラーとなった場合、文字色を変更し非表示とします。" & vbLf & _
 " ( #N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME? )" & vbLf & "" & vbLf & _
 "条件付き書式を用いて実行します。" & vbLf & _
 "(既に3ヶの書式が設定されているセルは実行されません。)" & vbLf & "" & vbLf & _
 "次の3つのうちのいずれかを選択して下さい。" & vbLf & "" & vbLf & _
 "《 はい 》    … シート内すべての数式セルを非表示モードにする。" & vbLf & _
 "《 いいえ 》   … 非表示モードを解除する。" & vbLf & _
 "《 キャンセル 》 … 何もせず、閉じる。"
 スタイル = vbYesNoCancel + vbQuestion + vbDefaultButton1 + vbApplicationModal
 タイトル = " 【 演算エラー非表示設定 】"
 YESNO = MsgBox(メッセージ, スタイル, タイトル)
 FrgA = 0
 FrgB = 0
 
 If (YESNO = vbYes) Or (YESNO = vbNo) Then
 
 Application.ScreenUpdating = False  '画面固定
 If ActiveSheet.ProtectContents Then FrgA = 1
 If YESNO = vbYes Then FrgB = 1
 If YESNO = vbNo Then FrgB = 2
 
 Set 初期セル = Selection
 ActiveSheet.Unprotect
 Cells.SpecialCells(xlCellTypeFormulas, 23).Select
 カウント = 0
 
 For Each セル In Selection
 設定数 = セル.FormatConditions.Count
 If 設定数 > 0 Then
 For I = 1 To 設定数
 数式 = セル.FormatConditions(I).Formula1
 If (Len(数式) >= 9) And (Left(数式, 9) = "=ISERROR(") Then
 セル.FormatConditions(I).Delete
 カウント = カウント + 1
 Exit For
 End If
 Next
 End If
 
 If FrgB = 1 Then
 設定数 = セル.FormatConditions.Count
 If 設定数 < 3 Then
 セル.FormatConditions.Add Type:=xlExpression, Formula1:= _
 "=ISERROR(" & セル.Address() & ")=TRUE"
 If セル.Interior.ColorIndex = xlNone Then
 セル.FormatConditions(設定数 + 1).Font.ColorIndex = 2
 Else
 セル.FormatConditions(設定数 + 1).Font.ColorIndex = _
 セル.Interior.ColorIndex
 End If
 End If
 End If
 Next
 
 初期セル.Select
 Set 初期セル = Nothing
 Application.ScreenUpdating = True  '画面固定解除
 If FrgA = 1 Then ActiveSheet.Protect
 If FrgB = 1 Then
 MsgBox "エラー非表示モードにしました。", vbInformation
 ElseIf FrgB = 2 Then
 If カウント = 0 Then MsgBox "エラー非表示に設定されてませんでした。", vbInformation
 If カウント > 0 Then MsgBox "通常の状態に戻しました。", vbInformation
 End If
 End If
 Exit Sub
 
 errout:
 MsgBox Error(Err.Number), vbExclamation
 
 End Sub
 
 
 |  |