特に、Visioの下位バージョンには存在しないプロパティに書き込んでいるため、Visio2003で動作するマクロが下位バージョンのVisioで問題を引き起こさないようにする必要があります。現在、私はこれを行っています:
...
On Error GoTo NoComplexScriptFont:
Set cellObject = shapeObject.Cells("Char.ComplexScriptFont")
On Error GoTo ErrHandler
...
NoComplexScriptFont:
Rem MSGBOX only for debug
MsgBox "No Such Property"
GoTo endsub
ErrHandler:
Rem put in general error handling here
GoTo endsub
endsub:
End Sub
...
これは機能しますが、少し面倒だと思います。'Application.version'(Visio 2003では'11'を返す)を使用するというアイデアをいじくりまわしましたが、特定のリリースで使用できるプロパティについての仮定を避け、プロパティ自体をテストするだけです。
VBAでこれを行うための適切なイディオムは何ですか?
ありがとう
---以下のいくつかの答えを得ました、私の好ましい解決策はこれでした:
If shapeObject.CellExists("Char.ComplexScriptFont", 0) Then
msgbox "Property exists"
else
msgbox "Property does not exist"
end if