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

準備

f:id:akashi_keirin:20191004220440j:plain

シートの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メソッドを使用しているだけ。

こいつを実行すると、

f:id:akashi_keirin:20191004220443j:plain

こうなる。確かに丸印がついている。

おわりに

今のところ、このメソッドの使いどころが皆目見当つかない。