- ベストアンサー
Word フィールドのチェックボックス判定方法
チェックボックス に、名前 Check1 を設定 フィールドコードにて { IF Check1=True "(チェックボックス チェック)" "□" } を、記載しましたが Check1を、ON/OFFして、フィールド更新しても (チェックボックス チェック)⇔□の表示が入れ替わりません。 チェックボックスのON/OFF判定方法を 教えていただけないでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
質問にあるフィールドコードは、二つの意味で動作としては 正しくないと思います。 一つ目 [チェックボックスフォームフィールド]のブックマーク名を 指定してブックマーク参照をした場合、その値を表示させる ことはできません。 単純にブックマークを参照するものを用意して、事前に検証 していないため、正しくない式を作っても意味がありません。 例: { REF Check1 }を用意してフィールドコードを非表示する。 この場合、チェックの有無にかかわらず何も表示されない。 二つ目 { IF Check1=True "(チェックボックス チェック)" "□" } 上記の書き方としても不適切。 以前の質問として「WORDのIFにEqフィールドは使えない」でも 似たような書き方をしていましたが、あえて書きませんでしたが 等号記号の前後を半角スペースで空けるか、Trueの部分を "True"のように囲んで等号記号とは別であることを認識する ようにしないとダメです。 "Check1"もテキストなのかブックマーク名なのか判別しにくく 書き方としても不適切ですね。省略形でも、{ Check1 }にして 書くべきだと思います。 それと、[チェックボックスフォームフィールド]を取得する 場合でも、"True"というテキストで認識するのも意味がない ことですね。 そのため、「Check1=True」が意味のない書き方なので正しく 動作せずに判定できないのです。 ※これ以降は判定するための方法 どうしてもフィールドコードだけで認識させたいのならば、 Linkフィールドを使ってテキストを取得する方法を利用し、 それを判定に使うようにします。 [チェックボックスフォームフィールド]である[Check1]を コピーし、[形式を選択して貼り付け]で[リンク貼り付け] を有効にして[テキスト]で貼り付けします。 貼り付けたものをフィールドコードで表示すると { LINK Word.Document.8 "文書名" "OLE_LINK1" \a \t } のように、OLEを使ったブックマーク名をもとにテキスト として「1」や「0」が取得できます。 これをもとに判定式を作ってみてはどうでしょうか。 { IF Check1=True "(チェックボックス チェック)" "□" } これのCheck1の部分をLinkフィールドのものと交換。 等号記号を含む部分を「 = 1 」に書き換える。 これで判定できる状態になると思います。 なお、[チェックボックスフォームフィールド]のプロパティ などを書き換えたりすると、"OLE_LINK1"のブックマーク名 が無効になるので、編集した場合はブックマーク名を有効な "OLE_LINK2"などのブックマーク名に書き換えてください。 ちなみに、フォームフィールドはマクロを有効に活用できる 設定があるので、マクロで判定する方法もあります。 これについては今回の質問では回答しませんので、他の回答 を待つか、別質問として投稿してください。
お礼
ありがとうございました。