プロが教える店舗&オフィスのセキュリティ対策術

チェックボックス に、名前 Check1 を設定
フィールドコードにて
{ IF Check1=True "(チェックボックス チェック)" "□" }
を、記載しましたが

Check1を、ON/OFFして、フィールド更新しても
(チェックボックス チェック)⇔□の表示が入れ替わりません。

チェックボックスのON/OFF判定方法を
教えていただけないでしょうか。

A 回答 (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"などのブックマーク名に書き換えてください。

ちなみに、フォームフィールドはマクロを有効に活用できる
設定があるので、マクロで判定する方法もあります。
これについては今回の質問では回答しませんので、他の回答
を待つか、別質問として投稿してください。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2012/03/21 23:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!