• ベストアンサー

「Form_フォーム1.テキスト1.Value = "" 」がうまくいかない。

VBAについての質問です。(オフィス2003) フォーム1にテキストボックス1を作成しました。 Module1に Sub test() If Form_フォーム1.テキスト1.Value = "" Then MsgBox "空白です" End If End Sub とコードを書き、テキストボックス1を空白の状態でtestを実行しても何も起こりません。 F8で一行づつ実行してみてみたら Form_フォーム1.テキスト1.Valueのところにカーソルを当てると Form_フォーム1.テキスト1.Value=Nullとなります。 どうすればテキストボックス1が空白なら「空白です」と表示させることが可能でしょうか? よろしくお願いします。

noname#150256
noname#150256

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

>MsgBox "空白です" の所を Form_フォーム1.テキスト1.Value="空白です" に置き換えてみてください

noname#150256
質問者

お礼

ご回答ありがとうございます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

使用しているソフトの種類ぐらい、質問する場合書くこと。 オフィスといってもプロフェショナルにはアクセスも入っているようだし。 アクセスらしいが エクセルVBAでやってみると 標準モジュールに Sub test() If UserForm1.TextBox1.Value = "" Then MsgBox "空白です" End If End Sub を貼り付け、実行ーSUB/ユーザーフォームの実行、をすると 「空白です」となる。ユーザーフォームのことは質問に触れてないが ウラで表示されて、Testが実行されるようだ。 しかし普通はフォームのInitiarizeとかフォームの表示とか、その後ボタンのクリックとか、いわゆるイベントとか、Testに入ってくる 前のステップ、実行のきっかけがあるはず。 その辺のことを良く考えてみる必要があるのでは。 人手操作でフォームを表示させると、Test自身を実行する場面が与えられないはず。フォームを表示したとき、その上のコントロールの暗黙の初期値も、勉強する必要があるかもしれない。

noname#150256
質問者

お礼

すいませんでした。 以後気をつけます。 ご回答ありがとうございます。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

フォームってどのソフトのフォーム? Nullが出てくるところを見るとAccessかな? Nullは値ではないので=では調べられません IsNull関数で調べます If IsNull(Form_フォーム1.テキスト1.Value) Then

noname#150256
質問者

お礼

そうです。 アクセスです。説明不足ですいません。 できました!ご回答ありがとうございます。

関連するQ&A

  • Nullについて

    こんばんは!よろしくお願いします。 新規に作成したフォームにコンボボックスを設置して Sub test1() If Form_フォーム1.コンボ0.Value = Null Then Form_フォーム1.コンボ0.Value = "" End If MsgBox Form_フォーム1.コンボ0.Value End Sub Sub test2() If IsNull(Form_フォーム1.コンボ0.Value) = True Then Form_フォーム1.コンボ0.Value = "" End If MsgBox Form_フォーム1.コンボ0.Value End Sub 上記2つのサンプルを実行した時に、 test1のほうだけ 実行時エラー94 Nullの使い方が不正です。 となります。 ウォッチウインドウで見ていくと、 「オブジェクト変数、またはwithブロック変数が設定されていません。」 となりますが 「If Form_フォーム1.コンボ0.Value = Null Then」 を通過したら Nullになります。 何が起こっているのでしょうか?

  • フォームのテキストボックスが空白なら"*"を入力する

    「フォームのテキストボックスが空白なら"*"を入力する」 としたいのですが If Form.承認者テキスト.Value = "" Then Form.承認者テキト.Value = "*" だと承認者テキストでも"*"が入力されません。 Form.承認者テキスト.Value = Null としてもできません。どうすればいいのでしょうか? よろしくお願いします。

  • 「Text」ではエラーになり、「Value 」だと

    「Text」ではエラーになり、「Value 」だと正常に動く理由がわかりません。 アクセスのフォームを作り、その上にテキストボックスとコマンドボタンを設置しました。 テキストボックスに値をいれ、コマンドボタンを押すと、テキストボックスに値を空白にするコードを考えてたのですが ひとつ疑問が浮かびました。 それは、 Private Sub コマンド2_Click() Me.テキスト0.Text = Null End Sub だとエラーになり、 Private Sub コマンド2_Click() Me.テキスト0.Value = Null End Sub だと正常に動くという事です。 「Text」ではエラーになり、「Value 」だと正常に動く理由がわかりません。 こういうことは何を確認すればわかるのでしょうか?(ヘルプ?オブジェクトブラウザ?) よろしくお願い致します。

  • TextとValueの違い?

    Access2010です。 フォームに有る数値入力のためのテキストボックスのKeyDownイベントに、入力後の値がゼロかNullか空白なら再入力させるようにコードを記述しましたがこれでは「型が一致しません」のエラーになります。 -----KeyDownイベントの内容 ここから----- Select Case Keycode Case 13 If IsNull(Me.数量.Text) Or Me.数量.Text = "" Or Me.数量.Text = 0 Then MsgBox ("数量が不正です"), vbCritical Keycode = 0 End If End Select -----KeyDownイベントの内容 ここまで----- でも、Exitイベントに同じような内容を記述した場合は希望通りの動きをします。 ※上記コードからSelectとKeycode=0を外し、TextをValueに変更。 私が何かを理解できていないのだと思いますが、何が違うのでしょう?

  • 全ページ form textにvalue=""を入れるのを忘れた

    お世話になります。 大バカなことをしてしまいました。助けてください。 全ページにわたり、フォームがあるのですが、 全ページにわたって、 <form method="post" action="sample.php" name="test"> <dl> <dt><input class="mailBox" type="text" size="20" name="data[email]"/></dt> <dd><input class="submitBtn" type="submit" value="送信"/></dd> </dl> </form> と、書いてしまいました。そうです、dtの入れ子になっているinput textに value=""を入れるのを忘れてしまいました。 そこでJqueryを使って、valueがない場合、value=""追加して書こうと思っていて以下のように書きましたがうまくいきません。どうすればよいか、教えてください! $(function(){ if(!$('form :text[value=""]')){ $("this").html('form :text[value=""]'); } });

  • チェックボックスにチェックが付いているかを取得したい

    ACCESS2003を使用しています。 チェックボックスにチェックが付いているかを取得したいのですが下のコードを実行すると 「実行時エラー'94' Nullの使い方が不正です。」 というエラーになってしまいます。 Sub test() MsgBox Form_フォーム1.チェック0.Value End Sub フォームを開くとチェックボックスが図のように灰色になるのですがこれが原因なのでしょうか? ちなみに同じことをエクセルで行なったら問題なくできました。 よろしくお願い致します。

  • フォーム1が開いているのならMsgBoxを表示

    Sub マクロ() If フォーム1が開いているのなら Then MsgBox "フォーム1は開いています" End If End Sub アクセスで上記の事をやりたいのですが、コードを教えていただけますか? Sub test() Dim myForm As Form For Each myForm In Forms Debug.Print myForm.Name Next End Sub で、フォームをループできるのですが、いちいちループさせずに、フォーム1だけをつかんで、 起動している(開いている)ならメッセージボックスを表示させたいです。

  • テキストボックスなら空白にする

    フォームにテキストボックス2つとコンボボックス2つを設置して、 規定値に値を設定し、 Private Sub cb_テキストボックスなら空白にする_Click() Dim ctl As Control For Each ctl In Me.Controls If ctl.ControlType = acTextBox Then ctl.Value = Empty End If Next ctl End Sub としたのですが何も起こりません。 空白にするにはどうすればいいでしょうか? あと、 ctl.Valueと打つ時に、 ドットの後に、Valueが一覧に出てきませんでした。 それが原因で空白にならないのでしょうか? ご回答よろしくお願いします。

  • フォームのイベントを標準モジュールから呼び出す

    フォームのイベントを標準モジュールから呼び出す事は出来ないのでしょうか? ちなみにアクセスです。 例えば、 Private Sub Form_Load() MsgBox "test" End Sub というのはフォームを開いたときにしか発生しないですよね。 でもフォームを開いている状態でForm_Loadと全く同じ事をしてほしい時は どうすればいいですか? 標準モジュールで Sub a() Call Form_フォーム1.Form_Load End Sub としてみましたが、メソッドまたはデータ メンバが見つかりません。 (Error 461)になりました。 MsgBox "test" だけなら、 Sub a() MsgBox "test" End Sub にすりゃいいじゃん!って思われがちですが、 実際はForm_Loadイベントにはたくさんのコードが書かれています。 標準モジュールからイベントの呼び出しを教えてください。

  • IF文の分岐が正しく動きません

    Access VBAについて教えてください。いまオプショングループの中にテキストボックスがあります。オプショングループをoption1、テキストボックスをtextbox1とします。テキストボックスは空の状態で、ロックをかけているので入力はできません。 実行ボタンを押したときに、テキストボックスの中が空ならMsgboxをだしなさいという文をかきました。 If txtbox1.value = "" Then msgbox "nothing" end if また .value=NULL とも書き換えて実行しましたが、なぜかmsgboxを表示せずにend ifにいってしまいます。何が原因と考えられるでしょうか?

専門家に質問してみよう