CircleInvalidメソッドというものがある
CircleInvalidというメソッドがある
知ってました? 私は知りませんでした。
大絶賛シリーズPoweredSheetプロジェクトに取り組んでいるときに発見。
Worksheet
クラスのメソッドにCircleInvalid
というメソッドがあったのだった。
名前だけ見ても何をするメソッドなのかサッパリわからんかったので、みんな大好き『Office デベロッパー センター』のWorksheet.CircleInvalid method (Excel)の項で調べてみた。
曰く、
Circles invalid entries on the worksheet.
ワークシートの不正な入力に丸をつける、ということらしい。
PoweredSheetクラスにCircleInvalidメソッドを実装する
……っつっても、[Worksheet].CircleInvalid
メソッドをラップするだけだけどな。
リスト1 クラスモジュール PoweredSheet
※CircleInvalid
メソッドの部分のみ。
Option Explicit 'Module Level Variable' Private realSh As Worksheet Private isAvailable As Boolean 'Constructor' Public Sub init(ByVal targetSheet As Worksheet) Set realSh = targetSheet isAvailable = True End Sub Private Sub Class_Initialize() isAvailable = False End Sub Public Sub CircleInvalid() Call realSh.CircleInvalid End Sub
準備
シートのA6セルに、このように入力規則を設定し、セルには入力規則に違反した値を書き込んでおく。
入力規則で縛りをかけていても、VBAからならフツーに違反した値を書き込むことができる、というのは有名な裏技だろう。
これで準備完了。
CircleInvalidメソッドを使う
んで、このPoweredSheet
クラスのCircleInvalid
を次のコードで使用する。
リスト2
Private Sub test04() Dim ps As PoweredSheet Set ps = New PoweredSheet Call ps.init(Sheet1) With ps Call .CircleInvalid End With End Sub
単にCircleInvalid
メソッドを使用しているだけ。
こいつを実行すると、
こうなる。確かに丸印がついている。
おわりに
今のところ、このメソッドの使いどころが皆目見当つかない。