[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAを用いてすべてのシートの特定のセル(複数)の計算結果が0以外であれば警告が出るようにしたい』(てん)
こんにちは。
ある数値を入力してそれがある値と比較して誤差をチェックする(K27-L27みたいな簡単な式)際に、
その値が0出ない場合に警告がでるようにしたいです。
式が入っているのは列になっていて、さらに複数あります。
色々やってみたんですがだめでした。
WindowsXP、Excel2007を使用しています。
よろしくお願いします。
たとえばE列の式をチェック。
Sub Sample() Dim c As Range Dim r As Range Dim s As String Dim flag As Boolean
Set r = Columns("E").SpecialCells(xlCellTypeFormulas, 23) If Not r Is Nothing Then For Each c In r flag = False If IsNumeric(c.Value) Then If c.Value <> 0 Then flag = True Else flag = True End If If flag Then s = s & c.Address(0, 0) & " " Next If Len(s) = 0 Then MsgBox "範囲内の式の結果はすべて0でした" Else MsgBox "以下のセルの値が0ではありませんでした" & vbLf & s End If Else MsgBox "範囲内に式はありません" End If Set r = Nothing End Sub
ぶらっと立ち寄り
チェックしたいセルはO4,O6〜O25で、エクセルを保存する際にメッセージが出るようにしたいです。
たびたび済みませんがよろしくおねがいします。
上の式は大変参考になりました。ありがとうございました。
それでは、保存する前にメッセージを。 ThisWorkbookモジュールに以下。シート名は適切なものに。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim c As Range Dim r As Range Dim s As String Dim flag As Boolean
On Error Resume Next Set r = Sheets("Sheet1").Range("O4,O6:O25").SpecialCells(xlCellTypeFormulas, 23) On Error GoTo 0 If Not r Is Nothing Then For Each c In r flag = False If IsNumeric(c.Value) Then If c.Value <> 0 Then flag = True Else flag = True End If If flag Then s = s & c.Address(0, 0) & " " Next If Len(s) = 0 Then s = "範囲内の式の結果はすべて0でした" Else s = "以下のセルの値が0ではありませんでした" & vbLf & s End If Else s = "範囲内に式はありません" End If
If MsgBox(s & vbLf & "保存しますか?", vbYesNo) = vbNo Then Cancel = True Set r = Nothing
End Sub
ぶらっと立ち寄り
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.