目障りなエラーチェックマークを除去する
目障りなエラーチェックマークを除去する
状況
セルに数字を文字列で書き込んだ場合、
このように実に目障りなことになる。
セルの左隅の緑色のスピードくじを一掃したい。
スピードくじを一掃するメソッド
おなじみMicrosoft DocsのRange.Errors propertyの項によると、Range
オブジェクトのErrors
プロパティからErrors
オブジェクトを取得して、そのItem
プロパティを操作すれば良いらしい。
Item
プロパティ参照時に指定するインデックスはXlErrorChecks
列挙体を用いる。今回のように「このセルにある数値が、テキスト形式か、またはアポストロフィで始まっています。」が表示される場合は、同じくMicrosoft DocsのXlErrorChecks列挙体の項によると、xlNumberAsText
を用いれば良いっぽい。
上記の点を踏まえ、他のエラーチェックマークにも対応できるようにコーディングした。
リスト1
Public Sub removeErrorMarks( _ ByVal targetRange As Range, _ ByVal errorCheckType As XlErrorChecks) '……(1)' Dim targetCell As Range For Each targetCell In targetRange '……(2)' With targetCell '……(3)' .Errors.Item(errorCheckType).Ignore = True End With Next End Sub
まず、(1)の
Public Sub removeErrorMarks( _ ByVal targetRange As Range, _ ByVal errorCheckType As XlErrorChecks)
で引数を設定。
Range
オブジェクトとチェックするエラーの種類を表すXlErrorChecks
型の値を受け取る。
(2)からの5行
For Each targetCell In targetRange With targetCell .Errors.Item(errorCheckType).Ignore = True End With Next
では、受け取ったRange
オブジェクトのセル一つ一つを巡回して処理。
(3)の
With targetCell '……(3)' .Errors.Item(errorCheckType).Ignore = True End With
で、Errors
オブジェクトのItem
プロパティを参照してError
オブジェクトを取得し(オブジェクト ブラウザーに「Property Item(Index) As Error
」と書いてある。)、そのIgnore
プロパティの値をTrue
にする。
「無視する」をTrue
にすることによって、目障りなスピードくじを除去するのだ。
実行
次のコードで実行。
リスト2
Private Sub testRemoveErrorMarks() Call removeErrorMarks(Selection, xlNumberAsText) End Sub
選択範囲の「このセルにある数値が、テキスト形式か、またはアポストロフィで始まっています。」スピードくじを一掃するコードだ。
ご覧のとおり。
おわりに
え? 「ファイル」メニューから「オプション→数式」に進んで、
このチェックをオフにすればいいじゃん、ってか?
うるせえ、黙ってろ!
わしも今気づいたのじゃw