• ベストアンサー

access テキストボックスの値取得

いつもお世話になりますm(_ _)m access VBAをかじり始めた「超・初心者」です(^^;) フォームの画面にテキストボックスを作成し、そこに入力した値を取得したいのですが、どのようにすればよろしいのでしょうか?別に置いたコマンドボタンをクリックすると取得するようにしたいのです。 気軽に、コマンドボタンのイベントプロシージャに、 ----- dim rec as variant rec=textbox1.text   'recは、「テキストボックス1」に入力した値 ----- なんてやってみたんですが、全然ダメで、いろいろ検索してもさっぱり分かりません。 あほくさいほど初歩的な質問で恐縮ですが、なにとぞよろしくお願いいたしますm(_ _)m xp+access2003です。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.5

No.1です。 No.3の方の回答のように「Me!」を使ったときに「'textbox1'フィールドが見つかりません」 というエラーが返されるのだとすると、そのフォームに「textbox1」というコントロールがなく、 レコードソースとなるテーブル(連結フォームの場合)にも同名のフィールドがない、 ということになります。 最初のご質問文の中でも「textbox1/テキストボックス1」と表記揺れがありますので、 まずこの点(→フォームとコードでの名前の一致)をもう一度確認してみて下さい。 ただ、単に「フォーム上のコントロール/テーブル上のフィールド」に存在しないものを 指定した場合、通常返されるのは「変数が定義されていません」というメッセージで、 「オブジェクトが必要です」とは言われないと思うので、他にも問題を抱えた部分が あるように思います。 参考になるかわかりませんが、テキストボックスに入力した値を元に、簡単な式で 処理した結果を返すコードを、サンプルとして提示しますので、よければ動作を 確認してみて下さい。 作成手順;  1)新規フォームを作成  2)テキストボックス2つ(TB1,TB2)とコマンドボタン(Cmd1)を設置  3)Cmd1のクリック時イベントに下記のコードを貼り付け   (このとき、「Private Sub ~」と「End Sub」の行は、重複させないで下さい)  4)適当な名前をつけてフォームを保存 '~~~以下を貼り付け~~~ Private Sub Cmd1_Click() On Error GoTo エラー処理 '変数Stageは、エラーがどこで発生したかを把握するのに使用 Dim Rec As String, Stage As Integer Stage = 0 'RecにTB1の値を代入(RecをStringとしたため、TB1がNullの場合は 'エラーとなるのを、Nz関数で長さ0の文字列に変換することで回避) Rec = Nz(TB1) Stage = 1 'TB2にメッセージを表示 TB2 = "入力値は「" & Rec & "」です。" Stage = 2 Exit Sub エラー処理: 'エラー発生時、エラー情報と発生位置(=Stage)を表示 MsgBox Err & ":" & Error$ & Chr(13) & "Stage= " & Stage, , Me.Name & " Cmd1_Click" Exit Sub End Sub '~~~以上を貼り付け~~~ なお、サンプル中の「Rec=Nz(TB1)」を「Rec=TB1」に変更した後、TB1が空(Null)の 状態でCmd1をクリックすると、エラー時の動作を確認できます。 (エラーメッセージに「Stage= 0」と表示されるので、Stage=0とStage=1の代入の  間でエラーが発生したとわかります) コード作成中は、面倒でもこうしておくと、どこでエラーが起きたか特定しやすく なりますので、これも参考までに。

prairie-gentian
質問者

お礼

>最初のご質問文の中でも「textbox1/テキストボックス1」と表記揺れがありますので、 まずこの点(→フォームとコードでの名前の一致)をもう一度確認してみて下さい。 この点の確認を怠っていましたので、あらためて「テキストボックス」「プロパティ」「その他」「名前」のところを確認しましたところ・・・(^^;)(^^;)(^^;) 全くその通りでしたm(_ _)m 大勢の皆さんに大変なお手数をおかけいたしました。まことに申し訳ございません<(_ _)> 初心者“以前”の間抜けなミスで、穴があったら入りたい気持ちです。 これに懲りず、これからもご指導・ご教授のほど、よろしくお願い申し上げます<(_ _)> DexMachinaさんへの御礼で、ご回答下さった皆さんへの御礼をかねさせていただきます。まことにありがとうございました。

prairie-gentian
質問者

補足

ご回答、ありがとうございますm(_ _)m ご教示のフォームをさっそく作ってみました。すると、「438:オブジェクトは、このプロパティ、またはメソッドをサポートしていません。Stage=0」と出てきます。 全く意味が分かりません(^^;) なにとぞご指導のほど、よろしくお願い申し上げます<(_ _)>

その他の回答 (11)

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

とりあえず・・・ 「text」はフォーカスがある場合にのみ有効だったと思います。 「textbox1.value」に変えれば、取得可能なのではないでしょうか。 Dim Rec As Variant Rec=textbox1.value MsgBox "textbox1= " & Rec

prairie-gentian
質問者

補足

早速のご回答、ありがとうございます。 >「textbox1.value」に変えれば、取得可能なのではないでしょうか >Rec=textbox1.value は既に試してみました。すると「オブジェクトが必要です」というエラーメッセージが出ます(^^;) なんか、簡単そうなことで躓くのって、ホントに滅入ります。

関連するQ&A