- ベストアンサー
Wordで条件によって文章を非表示にする方法
- Wordで条件によって文章を非表示にする方法についてご教示ください。
- エクセルの「行の非表示」と同様の挙動をWordで実現したいです。
- VBAなどを使用して文章を非表示にする方法について詳細を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.2の回答者です。 > { if 1 = 1 "{ LISTNUM NumberDefault \l 1 }" "×"} > if文の中のlistnum文に対して、空白行が返されている IF文の中に"{ LISTNUM NumberDefault \l 1 }"とだけ記載すると LISTNUMフィールドが有効に働かないようです。 { if 1 = 1 "{ LISTNUM NumberDefault \l 1 }○" "×"} にしても駄目なので、仕様として覚えるしかないようです。 有効な例:(←┘は段落記号) { if 1 = 1 "←┘ { LISTNUM NumberDefault \l 1 }○" "×"} または { if 1 = 1 "□{ LISTNUM NumberDefault \l 1 }○" "×"} 最初の例は条件が一致したら改行して「1)○」が表示されます。 次の例は同じ段落内に□1)○が表示されます。 このことから、以下のように作成して検証してみてね。 { LISTNUM NumberDefault \l 1 } ←┘ { LISTNUM NumberDefault \l 1 }{ if 1 = 1 "←┘ { LISTNUM NumberDefault \l 1 }○" "×"}←┘ { LISTNUM NumberDefault \l 1 } ←┘ ちなみに、補足される場合は早めにしてくださいね。 質問日から補足されるまで2週間近くたった場合、メール受付を 補足などにしていないと気が付かないこともあるので。 私の場合は、古い質問になると補足のメールを受け付ける設定を 解除することもありますので。
その他の回答 (2)
- enunokokoro
- ベストアンサー率74% (3543/4732)
アウトライン番号があるのですよね。 非表示にしたい段落を消したときに、番号は繰り上がるのですね。 そのような設定を、単純な方法では対応できないと思います。 似たような質問があったので参考になりませんか? http://okwave.jp/qa/q8082546.html 複数行に跨るとしても、フィールドコード内での改行をすることも 可能なので、作成方法を理解していれば難しくありません。 「林檎:~~」の一番最後へとIF文を設定して、林檎から梨までの 範囲にListNumフィールドで連番させます。 その他のアウトライン番号は通常の設定で対応できます。 修正はフィールドコードを表示しておき、「梨:」の後ろ部分などを 書き換えるだけで済みますね。 Excelでの[行の非表示]を使っても、連番の繰上りとかできるのか 疑問がありますが、似たようなことはWordだと隠し文字でも対応 できると思いますが、連番の繰上りができないので、過去の質問で 示した方法しかないと思っています。 マクロで対応するにしても、【梨の項目】をマクロにテキストとして 保存しておいて、特定の位置に挿入したり削除したりすることでの 対応になると思います。そのテキストへと段落番号がつくスタイルを 適用することで挿入による連番の追加や、削除による繰上りに対応し 希望していることに近いことができるかもしれません。 しかし、修正するにしても面倒であることは変わりませんよね。
お礼
回答、及び過去回答の紹介、ありがとうございます。 >連番の繰り上がり 確かに、[隠し文字]プロパティではこれは実現できませんでした。 フィールドコードのif文だけだと、作成も修正も困難になるかな、と思っていたのですが、マクロで該当の文字列の場所を検索・特定する手間を考えれば、こちらの方が簡単かも知れません。 フィールドコード内での改行やListNumフィールドというテクニックは知らなかったのですが、かなり使えそうです。色々と試してみます。 ありがとうございました。
補足
申し訳ありません。 自分でも色々調べて、試してみたのですが、LISTNUMフィールドコードが上手く働きません。 { LISTNUM NumberDefault \l 1 } { LISTNUM NumberDefault \l 1 } { if 1 = 1 "{ LISTNUM NumberDefault \l 1 }" "×"} { LISTNUM NumberDefault \l 1 } 以上のようにフィールドコードを記述すると 1) 2) 3) という表示になってしまいます。 if文の中のlistnum文に対して、空白行が返されているようなのです。 どこが問題なのでしょうか? どのように修正すれば、1)~4)の連番が表示されるようになるのでしょうか?
- DreamyCat
- ベストアンサー率56% (295/524)
Wordの文章のままでやるとちょっと面倒です。 ⇒Wordの表を使うと VBAで表の中の「セル」の言葉の検索と その表の行間設定と行の高さの設定で済みます。 あとはそれを元に戻せるようにするだけです。 Excelはご希望ではないようですが 一般機能のフィルターだけで済みます。 ・フィルターを設定します。 ・フィルターの詳細設定、またはフィルターを設定したセルの右の▼のところで出るダイアログで、「テキストフィルター」で「指定の値を含まない」でできます。 ↓ どうしてもWordということなら エクセルでフィルターのボタン?がある近辺をコピー Wordにワークシート形式でリンク貼り付け それをダブルクリックするとExcelが起動するので、 セルの右のフィルターのボタン▼をクリックして 上記のようにテキストフィルターをかけます。 なお、Wordの表やエクセルでは 1)林檎:~~ ではなく 1 林檎 ~~ のようにセルごとに分けておきます。 すでに入力済みの場合には それらの言葉の範囲をすべて選択して 表を設定します。 エクセルのセルに分けるには、データ ⇒ 「区切り位置」で分けておきます。
お礼
回答ありがとうございます。 エクセルファイルを埋め込む方法は、条件を変更するのが大変だったり、埋め込んだ複数のファイル間で条件の共有ができなさそうなので、VBAでの修正を考えてみます。 表の高さを0にする、という方法は思いつきませんでした。 調べてみたら、書式設定の中に「隠し文字」というプロパティがあるようなので、これで何とかできないかな、と思っていますが、表を使った方が対象文字列の特定にはいいかもしれません。 色々と自分でも試してみます。
お礼
ありがとうございます! {LISTNUM}の前に文字列を置いたり、改行すれば、LISTNUMがきちんと動きました。 時間が空いてしまった補足にも素早く回答して頂き、本当にありがとうございました。