• 締切済み

ワードのテキストボックスフォームフィールド 【プロパティで設定した種類以外のデータ】

ワード2003のテキストボックスフォームフィールドについて おわかりになる方いらしたら、教えて下さい。 テキストボックスフォームフィールドを挿入して、「テキストボックスフォームフィールド」 ダイアログボックスで種類を「文字列」にしました。 動作確認をした所、文字列はもちろんですが、なぜか数値でも日付でも入力出来ました。 ここでの種類の指定は、「文字列のみ」「数値のみ」というように、 あらかじめ入力内容を制限する為の設定だと理解していましたが、指定した種類以外のものでも入力可能です。 となると、ここで種類を指定する目的が何なのかがわかりません。 お分かりになる方、いらっしゃいましたら、ぜひ宜しくお願いしますm(__)m

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

pikepikepi 様、enunokokoro様 こんばんは。 もちろん、1月は、全角数字+漢字は、それを半角にして、Val 関数で、数値には変換できます。 a = Val(StrConv("1月", vbNarrow)) + 1 a は 2 になります。 これは、あくまでも、VBAの範囲内なので、それは、あまりWordとして特化した問題ではないようです。 余談にはなりますが、VBAの解決方法というのは、しょせん、VBAのセキュリティオプションに支配されてしまうので、ある程度、扱える人のいるところ以外は、避けられれば避けたほうがよいと思うことがあります。Excelとは違い、Wordはあくまでも、文書という単位で扱いますし、私自身のWordでの文章の納品は、印刷すればよいというようにしてあります。(最近、PDFも多くなってきました) 私は、Excelは仕事では使いませんが、もしも、そういう状況に至れば、Excelのほうで、レイアウトを加工して作ることになるだろうと思います。Wordは、やはり全体的に扱いが難しいなって感じます。

回答No.4

Wendy02さんのマクロだと、確かに「1月」は数値になりませんね。 これだとWordにおける数値や文字列とは何かを説明するのには、私は 難しいと思いました。 そこで違う切り口でWordの数値と計算について、私が勉強したことから 解釈したことを書きたいと思います。 「1月」のように全角の数字と文字の組み合わせでは、数値として認識 がされませんが、「1月」のように半角数字と全角文字の組み合わせでは 「1」だけを認識し数値として表示や計算をしてくれます。 これは[テキストボックスフォームフィールド]以外でも、表内のセルに :1月:2月:{ =A1+B1 }: (:はセルの区切りを示す) のような計算を含んだ表を作成した場合に、計算結果として「3」を表示 してくれます。セル以外でもブックマークを使用しても同じです。 また、 :1 1 1 1 1:{ =A1 }: のようにセル内の数値を半角スペースで区切った場合、計算結果が「5」に なっていると思います。 このようにExcelとは違った計算をするWordでは、セルやブックマーク に半角数字+文字(全角や半角英字)を使った場合に数字だけを認識して 計算がされます。これはExcelではありえない現象です。 これらのことから、Wordのおける文字列とはすべてのTextを意味してる ことになり、文字列にある半角数字は数値として認識してくれるようで、 計算するためには先頭に半角数字をおくようにするようです。 [テキストボックスフォームフィールド]の[プロパティ]にある[数値]の 場合は、半角数字以外を除いた表示になることから、数字の前後にある 半角数字以外を無視して数値として認識してくれてるようです。 もう少し上記の内容を整理して、時間があるときに書き込むことがある かもしれませんので、締め切らないなら回答を入れるかもしれません。 本当は他の回答者からの意見や知識も知りたいのですが、Wendy02さん 以外にここを見てくれているいるのか少し不安です。 ここの理念として、情報ベース化を目指しているようなので、他の回答 がいつか付くかもしれませんので、問題が解決するまではあえて閉じて しまわなくてもよいでしょうね。 これは質問者さんの判断に任せます。私はしばらくこの質問への投稿は しないと思います。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。#1のWendy02です。 enunokokoro さん、返事を付けてくださってありがとうございました。 ここのカテゴリでは、enunokokoro さんほど詳しい回答される方はいませんので、詳しいことは、心強いです。 pikepikepi さん、 VBAの場合は、厳密には、変数の型を指定しない限り(以下のようなVariant型)は、文字列と数値の違いはありません。 >例えば「1月」とか社員番号としての「1100」等は数字だけど文字列の扱いになると考えればいいのでしょうか。 1月というのは文字列で、日付型にはなりませんが、1100は、文字列ですが、数値として扱うことが可能です。なお、wdRegularText等の書式型は、全て、Text とついているように、文字列で返されるはずです。 あくまでも、VBAでは、それを最初どのような型で返されるか調べ、その後の加工が可能かを調べるものです。数式型などは、ここでは、今は、入れておりません。 以下は、フォームフィールド・テキストボックスのテスト用マクロ '------------------------------------------------------- Sub FieldTest() Dim myStr As Variant Dim msg1 As String Dim msg2 As String Dim msg3 As String 'ここにフォームフィールドの名前を入れてください。例:Text2 Const FIELDNAME As String = "Text2"  myStr = ThisDocument.FormFields(FIELDNAME).Result 'ここでResult を取る  If myStr = "" Or myStr Like " " Then   MsgBox "フィールドは空です", vbInformation   Exit Sub  End If  If VarType(myStr) = vbString Then   msg1 = "文字列です -" & TypeName(myStr)  Else   msg1 = "文字列ではありません -" & TypeName(myStr)  End If  If IsNumeric(myStr) Then   msg2 = "数値として扱えます"  Else   msg2 = "数値ではありません"  End If  If IsDate(myStr) Then   msg3 = "日付として扱えます"  Else   msg3 = "日付ではありません"  End If  MsgBox "『 " & myStr & "は、』" & vbCrLf & _   msg1 & vbCrLf & _   msg2 & vbCrLf & _   msg3 & vbCrLf End Sub

回答No.2

Wendy02さんの後に回答するような内容ではないし、キチンと理解して 回答できる自信もないですが、興味があるので回答に参加します。 [テキストボックスフォームフィールド]の[プロパティ]にある[文字列] のことを知りたいのですね。他の[日付]や[数値]のように指定したもの 以外の入力をしても、[日付]だと拒否されるし[数値]だと表示形式での 表示になり文字扱いになりませんね。 けれど、[文字列]だけはすべて有効になるのが理解できないということ のようなので、その理由を私なりに解釈したものを以下に載せます。 [文字列]はマクロで見れば判りますが、EditTypeメソッドの指定になり、 その中の type が wdRegularText になります。 そのことから、Excelの[セルの書式設定]などの[標準]と同じ扱いだと 私は解釈しています。 なぜなら、Wordの文字列とは[数値]と[日付]、[計算式]の場合を除き、 すべての文字を対象にするからです。 [一般書式スイッチ]で[全角/半角]や[大文字/小文字]、[アラビア数字] や[漢数字]などの指定をすることはあっても数字以外の文字を対象には していません。 Excelのように表計算が主なものと違って、Wordは様々な文字を文章に して作成するワープロですから、文字列の扱いが違うと思うのです。 思いつきで書き込んでいるので、上記説明が正しいとは決して思っては いませんし、もっとWordのことをよく知る方々(専門家?)からの回答が あれば、キチンとした内容で回答されると思います。 私もこの質問に興味がありますから、様々な意見を知りたいですね。

pikepikepi
質問者

お礼

ご回答ありがとうございます! そうなんです。「数値」や「日付」を指定した時に指定した以外のデータを入力すると エラーメッセージが出たりきちんと表示されなかったりするのに 文字列に限ってはすべて有効なのがわからないんです。 マクロも記録マクロで下記の要領で試してみたところ「wdRegularText」との表示はありました。 文字列の概念がワードとエクセルでは違うということなんですね。 となると「数値」の概念も何だかあやふやになってきました…。 数値って計算対象になる数字と捉えていますが、これでいいのでしょうか? 例えば「1月」とか社員番号としての「1100」等は数字だけど文字列の扱いになると考えればいいのでしょうか。 引き続き、調べてみようと思います。どうもありがとうございました。 何かありましたら引き続きどうぞ宜しくお願いしますm(__)m

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 今、私も、文字列以外でも見直してみましたが、予想に反して、テキストボックスは、やはり全てが、「文字列」でした。他にはありません。入力規則のような仕組みもありません。 (調べ方は、VBAから、以下のような、Result というプロパティの値のデータ型で調べることで分かります。) どうやら、その指定は、規定の文字列に対する反映だけにしかないようです。それ以上の機能で、入力に対して反映するような機能は持ってはいないようです。 おっしゃるようなことは、たとえば、 フォームフィールドのテキストボックス-プロパティ-実行するマクロ 終了時に、以下の、CheckEnterChar を登録してやれば、数字をはねることが出来ます。 Sub CheckEnterChar() Dim myStr As Variant   myStr = ThisDocument.FormFields("TextBox").Result   If IsNumeric(myStr) Then    MsgBox "それは数字ですので入力できません", vbInformation    ThisDocument.FormFields("TextBox").Result = ""   End If End Sub ただし、フォームフィールドは、プロテクトしないといけません。 フォームフィールド自身では、何も機能を持たないのだと思います。私は、フィールドのコードは分かりませんので、VBAで代用していますが、そうでなければ、とても出来ません。 どなたか、いつもですと、この後に、この件に詳しい方がバックアップしてくれるはずですから、しばらく、締めないでください。

pikepikepi
質問者

お礼

早速のご回答ありがとうございます! マクロに関しては知識がないので、記録マクロで試してみました。 しかし、やり方が良くないのか「Result」というプロパティは表示されませんでした。 以下、私の操作方法です。 VisualBasicツールバーより「マクロの記録」ボタン―フォームツールバーより「テキストボックスフォームフィールドの挿入」ボタン -フォームツールバーより「フォームフィールドのオプション」ボタン-「種類」文字列を選択後「OK」-記録ツールバー「記録終了」ボタン -「ViualBasicEditor」で表示 と、いう手順で操作しましたがこの方法では間違いでしょうか? ViualBasicEditorでは、このような記載になっていました。 Sub Macro2()    Selection.FormFields.Add Range:=Selection.Range, Type:= _ wdFieldFormTextInput    Selection.PreviousField.Select    With Selection.FormFields(1)    .Name = "Text2"    .EntryMacro = ""    .ExitMacro = ""     .Enabled = True     .OwnHelp = False     .HelpText = ""     .OwnStatus = False     .StatusText = ""    With .TextInput    .EditType Type:=wdRegularText, Default:="", Format:=""    .Width = 0 End With 的外れな返答だったら、申し訳ありません。 良かったらVBAからの調べ方についても教えて頂けると嬉しいです。 お手すきの時で結構ですので宜しくお願いします。

関連するQ&A

  • テキストボックスフォームフィールドについて

    稟議書のテンプレートを作るのに、テキストボックスフォームフィールドのabボタンを使って入力フォーマットを作ってくれと言われて、ワードの本などでテキストボックスフォームフィールドを調べていますが、本にも、なかなか載っていなくて・・・フォームをダブルクリックすると、ダイアログボックスが出て、既定の文字列などでてきますが、入力してもらう時は、それぞれ、ダブルクリック後ダイアログボックスの既定の文字列に入力してもらうのでしょうか?いまいち使い方がよくわかりません。この機能を使うと、マルマル年マルマル月マルマル日などの年 月 日 がずれずに、入力できるそうなのですが、どのようにabボタンを使い フォームを使って、テンプレートを作り、第三者が入力していけばいいのでしょうか?教えてください。

  • MS Wordのテキスト ボックス フォーム フィールドについて

    もらったMS Wordのファイルに「テキスト ボックス フォーム フィールド」がいくつか設定されています。そのひとつをダブルクリックすると「テキスト ボックス フォーム フィールド」というダイアログが現れて、その中の「規定の文字列」にしかるべき文字列が書かれています。しかし、あるものは「規定の文字列」に文字列が書かれていないものがあります。例えば、「This is a pen.」と書かれている「テキスト ボックス フォーム フィールド」をダブルクリックしても、「規定の文字列」は空欄になっています。それでは、この「This is a pen.」という文字列はどこに書かれているのでしょうか? 教えてください。versionはWord 2003です。よろしくお願いします。

  • Word2002 フォームフィールドについて

    お世話になります。 Word2002を使用しています。 フォームフィールドでテキストボックスを選択し、フォームフィールドのオプションで 【種類(P):日付】 【日付の書式(F):ggge年M月d日(aaa)】 と設定しました。 フォームフィールドのオプション-【概定の日付】に 11/05/28 と入力した場合は、 平成23年5月28日(土) となるのですが、フォームの保護をしてから設定したテキストボックスに 11/05/28 と入力しても 平成23年5月28日(土) とはならず入力した文字(11/05/28)のままです。 フォームの保護をしたままで、テキストボックスに入力した 11/05/28 を 平成23年5月28日(土) にさせるにはどうすればよろしいのでしょうか? お手数ですがよろしくお願いいたします。

  • WORD2002:テキスト・ボックス・フォーム・フィールドの幅を広くしたい

    WORD2002でアンケート・フォームを作成しています。 テキスト・ボックス・フォーム・フィールドを挿入すると、2~3文字分の幅のフィールドが表示されます。このフィールドの幅を、それぞれ5文字分にしたり、20文字分にしたり、と幅を変えるにはどうすればいいのでしょうか? どのフィールドも最長文字数は指定せず、好きなだけ書けるようにしていますが、「だいたいこれくらい書いてほしい」という目安のような感じにしたいのです。 フィールド内にスペースを入れるやり方ではうまくいきません。マイクロソフト配布のWebテンプレートで色んな幅のフィールドを見たことがありますので幅を変えること自体は可能だと思うのですが、やり方がわからなくて困っています。 ご存知のかた、ご回答をどうぞよろしくお願いします!

  • Word2010のテキストボックスについて

    Word2010のテキストボックスフォームフィールドの挿入の仕方がわかりません。(単純な入力欄の作成がしたいです。) 「挿入」→「クイックパーツ」→「フィールド」かと思ったのですが、何を選べばいいのか、この「フィールド」であっているのかわかりません。 以前Word2003を使用していた時はやりかたがわかったのですが、、、。 よろしくお願いします。

  • テキストボックスフォームフィールド(Word2002)

    Wordでテキストボックスフォームフィールドを作成し、 保護されたフィールドへは、Enterキーを打っても スキップする設定はございますでしょうか? 何卒、ご教授下さい。

  • word2002フォームフィールドの日付の書式

    Word2002で文書にテキストボックスフォームフィールドを挿入し、 「種類」を「現在の日付」にした時の「日付の書式」について お聞きします。 一覧の中にある「yyyy'年'M'月'd'日'」と「yyyy年M月d日」が ありますが、この「'」がついているのといないのとでは どういう違いがあるのでしょうか? いろいろ調べたのですが、まったく見つからなくて…。

  • アクセスのフォーム上のテキストボックスについて

    アクセスのフォーム上のテキストボックスについて フォーム上のテキストボックスに直接数字を入力しようとしています。ただ、このテキストボックスのコントロールソースはフォームのレコードソースと違うものです。 この状況でテキストボックスに数値を直接入力しようとすると、『コントロールソースに連結しているので、編集できません。』と表示され、入力出来ません。 どうすれば、解決できるのかご存知の方、教えて下さい。宜しくお願いします。

  • ユーザーフォームのテキストボックスについて

    ユーザーフォームのテキストボックスを使ってシートにデータを転記しています。 テキストボックスに日付を5/10のような形式で入力し、表示をH22.5.10と変換させるようにしています。 Private Sub TextBox1_AfterUpdate() x = TextBox61Text TextBox1.Text = Format(x, "ge.m.d") End Sub これを転記した時に、そのまま文字列として貼り付けられるため、シリアル値として入りません。 これをシリアル値として入れるためにはどのようにすればいいでしょうか?

  • JavaScript~フォームのテキストエリアの設定

    フォームのテキストエリアの背景色を指定できたと思うのですが、 どのサイトでそれを見たのか忘れてしまい、どうしても見つかりません(^-^;; 方法、又は説明のあるサイトをご存知でしたら教えて下さい。 あと、同じくフォームのテキストエリアで、 入力した文字のフォントの種類やサイズを指定できますか? 読み込んだあとではなくて、書いているときです。 (説明が下手でごめんなさい) ネスケで見たときにテキストエリアが広くなってしまって、 掲示板等のデザインが崩れてしまいます。 同じ数値で指定するとI.E.よりネスケのほうが広くなるし字も大きいのですが、 ネスケ用に別指定等できるのでしょうか? お時間のあるときで構いませんので宜しくお願いします。

専門家に質問してみよう