AccessVBA テキストボックスの内容を規定値に設定したい

このQ&Aのポイント
  • AccessのVBAを使用して、テキストボックスに入力された値を規定値として設定したいです。テキストボックスは30個程度あり、任意のテキストボックスのみ設定したい場合には自作関数を使用します。
  • コマンドボタン『既定1』を押すと、右側のテキストボックス1の内容が既定として登録されるようになっています。
  • VBAのソースコードを実行すると、エラーが発生してしまいます。修飾詞が不正というエラーが表示されます。このエラーの解決方法を教えてください。
回答を見る
  • ベストアンサー

AccessVBA テキストボックスの内容を規定値

AccessVBA テキストボックスの内容を規定値に設定したい 環境:Access2003 VBA WindowsXP sp3 テキストボックスに入力された値を、規定値として設定したいです。 テキストボックスは30個程度。 『任意』のテキストボックスのみ設定したいので関数の自作を考えています。 コマンドボタン『既定1』を押すと、右側の『テキストボックス1』の内容が既定として登録されるよう考えています。 イメージ ↓コマンドボタン    ↓テキストボックス [既定1]   [テキストボックス1         ] [既定2]   [テキストボックス2         ] [既定3]   [テキストボックス3         ] …… … VBAにて下記ソースを書いたのですが正常に動作しません。 自作関数にて、引数 textboxName へと "テキストボックス名"を代入しています。 プログラムを実行すると    『修飾詞が不正です』    textboxName.ForeColor = 255    ~~~~~~~~~~~ というエラーが出てしまいます。 この時の引数の中身は textboxName = "テキストボックス1"です textboxName.ForeColor を テキストボックス1.ForeColor として認識してくれないようです。 解決方法を教えてください ソースは以下の通り------------------------------------- Option Compare Database ------------------------------------------------------- Function textboxSetDefault(textboxName As String) 'テキストを赤に変更 textboxName.ForeColor = 255 '現在入力されている値をデフォルト値に設定 textboxName.DefaultValue = textboxName.Value End Function ------------------------------------------------------- Private Sub 既定1ボタン_Click() Call textboxSetDefault(テキストボックス1.Name) End Sub -------------------------------------------------------

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

デザインビューで設定する必要がありますが、 以下にそのままがあります。 http://www.accessclub.jp/bbs3/0254/superbeg79523.html

tamariba2
質問者

お礼

ありがとうございます! ズバリ解決しました!!! ■修正前、間違っていたソース Function textboxSetDefault(textboxName As String) 'テキストを赤に変更 textboxName.ForeColor = 255 '現在入力されている値をデフォルト値に設定 textboxName.DefaultValue = textboxName.Value End Function ■修正後、正しく機能したソース Function textboxSetDefault(textboxName As String) 'テキストを赤に変更 Me(textboxName).ForeColor = 255 '現在入力されている値をデフォルト値に設定 Me(textboxName).DefaultValue = Me(textboxName).Value End Function 以上です。 引数に保存された値を利用する場合は、Me(カッコ) を使用すればいいんですね! ありがとう御座いました!!!!

関連するQ&A

  • EXCEL VBAのユーザーフォーム上のテキストボックスの入力方法について

    すいません教えていただきたいことがあります。 EXCEL VBAのユーザーフォームについて、 コマンドボタンにタグを設定して、これにキーボードと同じ機能を持たせて テキストボックス内に入力することは可能でしょうか。 例えばコマンドボタンを「あ」~「ん」まで作り、それぞれのボタンに「あ」~「ん」までのタグを設定する。 Private Sub UserForm_Initialize() CommandButton1.Tag = "あ" CommandButton2.Tag = "い" ・・・・「ん」までボタンを作成する。 次に、 Private Sub CommandButton1_Click() TextBox1.Value = TextBox1.Value & CommandButton1.Tag End Sub Private Sub CommandButton2_Click() TextBox1.Value = TextBox1.Value & CommandButton3.Tag End Sub ・・・「ん」まで作成する。 この設定では、コマンドボタンのクリックで文字の追加はできますが、ボタンを押すと常に文字が一番後ろに追加されるため、 テキストボックスをクリックしても文章の途中に文字を挿入することが出来ません。 通常のキーボードの入力と同じようにテキストボックス内でクリックした箇所からコマンドボタンで入力を開始するような設定は可能でしょうか。 よろしくお願いします。

  • レポートのテキストボックスには規定値がないのでし

    レポートのテキストボックスには規定値がないのでしょうか? フォームではフォーム上にテキストボックスを設置して規定値に文字を入れれば フォームビューの時に入力した文字が表示されますが、 レポートではページヘッダーにテキストボックスの設置まではできますが プロパティを見ても「規定値」と言う項目がありません。 レポートを開いて印刷する時にVBAで Report_R受領確認書.担当者名テキスト = 名前 とやりたいのですが、エラーになってしまいます。 なので、直接テキストボックスの規定値に名前を入れてしまおうと思ったのですがそれも見つかりません。 テキストボックスではなく、ラベルを使って行うしかないのでしょうか?

  • Accessでのテキストボックスのv記載方法

    Accessでのvbaを使用したコードの書き方について教えて欲しいです。 vbaを使用したますたメンテナンス(データ管理)のコードをAccessで組んでいるのですがで組んでいるのですがどうも上手くいかないところが多いです。 1. コードという名前のテキストボックス(プロパティ→すべて→名前でつけた名前を使用しています)の入力チェックが上手くいきません。ここでは自作関数を呼び出してif文で空白かどうかチェックしてるのですが コード(テキストボックス)=Nullとなってしまい、""のチェックに引っかかってくれません。どうしたら空白=""になってくれるのでしょうか。 デバッグをしてみたらテキストボックスは常にNull(Variant型)なってるのではなくたまに""(String型)になったりするので何が原因で型が変わってるのかも謎です テキストボックスだから""で空文字判定できると思うのですが… 書いたのは以下のコードです。 わかる方よろしくお願いします。 Public Function EmptyCheck(Koumoku As String) As Boolean '引数で渡された項目が入力されているかチェック If Koumoku = ""Then Koumoku.SetFocus Exit Function EmptyCheck = Ture Else EmptyCheck = False End If End Function Private Sub コード_KeyDown(KeyCode As Integer, Shift As Integer) 'Enterキー押したときに処理を開始する If KeyCode = 13 Then If EmptyCheck(コード) = True Then MsgBox "TextBox &を入力してください。" End If

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

    いつもお世話になります。VBAで質問があるのですが、ユーザーフォームを作り、コマンドボタンとテキストボックスを配置します。 Private Sub CommandButton1_Click() Dim i As Long  For i = 1 To 30   TextBox1.Text = i & "を入力しました"   Worksheets("Sheet1").Range("A1").Value = i & "回目です"  Next i End Sub と入力して実行すると、セルには1~30回まで順に書き込みがありますが、テキストボックスには最後の「30を入力しました」しか表示されません。 これを「1を入力しました」、「2を入力しました」、「3を・・・」というようにテキストボックスに順に表示させるにはどのようにしたらよいのでしょうか? よろしくお願いします。

  • テキストボックスのオブジェクト渡し

    えー始めまして。 最近、開発に復帰してブランクが3年ほどあるものなのですが、 現在、C/Sのクライアント側アプリをVB6.0で開発しています。 そのアプリのなかで、テキストボックスの入力チェックを行おうと、 プログラムを書いたのですが、テキストボックスオブジェクトを引数として サブモジュールに渡す方法ってわかる方いらっしゃいますか? サブモジュール側でオブジェクトを引数として使っているので、 規定オブジェクトのテキストボックスだと、オブジェクトイメージではなく 設定されているテキストの内容しか、引数で渡せなくて困っているんです。 このサブモジュールは汎用性を持たせようと作成したので、 これができないんであれば若干プログラムの見直しが必要なんです。 もし、ご存知の方がいらしたらご回答お願いします。

  • 保存されない理由は?accessvba

    図のようにフォームの上にサブフォームを設置して、 コマンドボタンとテキストボックス(txt_高さ)を設置しました。 コードは、 Private Sub コマンド1_Click() Me.サブフォーム.Height = Me.txt_高さ.Value End Sub です。 コマンドボタンを押すと、サブフォームの高さを設定する仕様なのですが、 サブフォームの高さを変化させて(例えば、2500twips)、 CTRL+Sを押して、バツボタンでフォームを閉じて、 再度フォームを開いても、2500twipsの高さではないです。 フォームを開いている最中に、VBAで変化させたサイズで保存して、 再度開いた時もその高さにしたいのですが、無理なのでしょうか? ヘルプ(SubForm."Height/高さ" プロパティ)には 「値の取得および設定が可能です。」と書いてありますから 設定も可能なのでは?と思っています。

  • エクセルマクロのテキストボックスの質問です。テキストボックス内の文字を

    エクセルマクロのテキストボックスの質問です。テキストボックス内の文字を24文字13行で設定します。文字を打つことにより残り行数をカウントできるようなマクロを作成したいと思い次のマクロを設定しましたがエラーがでます。対処方法わかりますか。 UserForm1のマクロは次の通りです。 Private Sub CommandButton1_Click() Me.Hide End Sub Private Sub TextBox1_Change() ato = 13 - TextBox1.linecounut Label1.ForeColor = 0 If ato <= 10 Then Label1.ForeColor = RGB(255, 0, 0) Label1.Caption = "あと " & ato & " 文字入力できます。" End Sub すると1回目は入力可能ですが,次のセルに移動するとこのようなメッセージが出てしまいます。 linecountのプロパティーを取得できません。このコントロールはフォーカスを持つ必要があります。setfoucusメソッドによってこのプロパティーまたhメソッドが参照される前にフォーカスに移動しました

  • 効率の良いテキストボックスの検知について

    VB6の初心者です。質問させていただきます。 画面上に5つのテキストボックス(TEXT1、TEXT2、TEXT3、TEXT4、TEXT5)と 1つのコマンドボタン(Cmd_SAVE)があり、 画面上の5つのテキストボックスをすべて記入し、 コマンドボタンを押すと、登録確認のメッセージボックスが表示され、 OKボタンを押すと、サーバへ転送され、 画面上のテキストボックスにひとつでも空欄があると、どのテキストボックスが 空欄であるかを示すメッセージが表示される処理をさせています。 そこで質問なのですが、今、メッセージボックス、登録処理は出来るようになったのですが、 とても処理の効率が悪い、もっと空欄を確認するのにすっきりとしたコードはある、と知り合いに言われました。 おそらく、繰り返し等を用いると思うのですが、メッセージにそれぞれのオブジェクト名を代入するやり方がわかりません。 下記が今のコーディングです。 Private Sub Cmd_SAVE_Click()   If TEXT1.Text = "" Then      MsgBox "TEXT1が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT2.Text = "" Then      MsgBox "TEXT2が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT3.Text = "" Then      MsgBox "TEXT3が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT4.Text = "" Then      MsgBox "TEXT4が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT5.Text = "" Then       MsgBox "TEXT5が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If MsgBox("入力データを登録しますか?", vbOKCancel, "登録確認") = vbCancel Then     Exit Sub   End If   End If ~登録処理~ End Sub どのような書き方がきれいで、効率的なコーディングなのでしょうか? ご教示お願いします!

  • Access VBAボタンでテキストボックスを入力

    access2010を使用しております。 フォームでボタンをクリックしたときに、テキストボックスを書換える コードを作りたいのですが、 Private Sub コマンド111_Click() ME!テキストボックス.value= "あああ" End Sub としても、テキストボックスは書き換わりません。 でも、ボタンをクリックした後にそのテキストボックスをクリックすると ちゃんと「あああ」と入力されています。 つまり、ボタンをクリックしても入力はされても表示がされず、 ただ、テキストボックスをクリックすると「あああ」と表示されると言った具合です。 また、テキストボックスをクリックする以外にも 違うレコードに移動してもとのレコードに戻ってもおなじように 表示されます。 これを押した時に表示を変更させるには どのようにすればよろしいでしょうか?

  • テキストボックス 空白確認

    エクセル VBAで コマンドボタンをクリックすると テキストボックスに空白があった場合 空白のテキストボックスにセットフォーカスしたいのですが 下記のように少ない場合は まだいいですが 多くなってきたとき見易さの面でも簡単にしたいのですが VBだとコントロール配列のインデックス値をループ処理 すればよいと思いますがVBAだとどのようにすればいいのでしょうか? Private Sub CommandButton3_Click() If TextBox2 = "" Then TextBox2.SetFocus ElseIf TextBox3 = "" Then TextBo3.SetFocus ElseIf TextBox4 = "" Then TextBox4.SetFocus ElseIf TextBox5 = "" Then TextBox5.SetFocus End If 御願いします。

専門家に質問してみよう