Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


35549 / 76732 ←次へ | 前へ→

【46381】Re:#DIV/0!を表示させず、この用になる場合は違う文字表示
発言  ぴかる  - 07/2/1(木) 12:45 -

引用なし
パスワード
   ももたんさん、こんにちは。

あたくし作のツールバーソフト「ピカつーる」の機能です。よかったら、お試し下さい。
エラーの場合は、セル色と文字色を同じにしてなんも起きてない様に見せてます。

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

1 hits

【46344】#DIV/0!を表示させず、この用になる場合は違う文字表示 ももたん 07/1/31(水) 16:45 質問
【46347】Re:#DIV/0!を表示させず、この用になる場合... へっぽこ 07/1/31(水) 16:50 発言
【46348】Re:#DIV/0!を表示させず、この用になる場合... へっぽこ 07/1/31(水) 16:51 発言
【46349】Re:#DIV/0!を表示させず、この用になる場合... Kein 07/1/31(水) 16:57 回答
【46350】Re:#DIV/0!を表示させず、この用になる場合... ももたん 07/1/31(水) 17:00 質問
【46353】Re:#DIV/0!を表示させず、この用になる場合... ハチ 07/1/31(水) 17:23 発言
【46354】Re:#DIV/0!を表示させず、この用になる場合... ももたん 07/1/31(水) 17:28 質問
【46357】Re:#DIV/0!を表示させず、この用になる場合... ハチ 07/1/31(水) 18:03 回答
【46355】Re:#DIV/0!を表示させず、この用になる場合... Kein 07/1/31(水) 17:30 発言
【46381】Re:#DIV/0!を表示させず、この用になる場合... ぴかる 07/2/1(木) 12:45 発言

35549 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free