• ベストアンサー

画面のフィールドの値を共通処理関数で読み書きしたい

Access2013 VBAで、現在システムを開発しているところですが、 フォーム上の帳票のボタンを押した時の処理が、複数の画面で共通なので共通処理として使用したいと考えていますが、その時に、画面のフィールドの名前を変数に変えてどのように画面のフィールドに値をセットすればよいでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8542/19422)
回答No.1

【Module1】 'グローバル変数の宣言 'フォームの名前 Public strFrm As String 'テキストボックスの名前 Public strTxt As String '共通関数 Public Sub MyFunc()  'テキストボックスに値をセットする為にテキストボックスにフォーカスをセット  Forms(strFrm)(strTxt).SetFocus  'テキストボックスに値をセット  Forms(strFrm)(strTxt).Text = strFrm & "+" & strTxt End Sub 【Form1】 Private Sub コマンド1_Click()  'フォームを指定する変数に自分の名前をセット  strFrm = Me.Name  '値をセットするテキストボックスに名前をセット  strTxt = "テキスト1"  '共通関数呼出  MyFunc End Sub 【Form2】 Private Sub コマンド2_Click()  'フォームを指定する変数に自分の名前をセット  strFrm = Me.Name  '値をセットするテキストボックスに名前をセット  strTxt = "テキスト3"  '共通関数呼出  MyFunc End Sub

superwonderful
質問者

お礼

ありがとうございます。 自分のソースを修正して実行したら簡単に出来ました。 また、よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • フォームのフィールドの参照の仕方

    Access2013 で、現在システムを開発しているところですが、 フォーム上の帳票のボタンを押した時の処理が、複数の画面で共通なので共通処理として使用したいと考えていますが、その時に、画面のフィールドの名前を変数に変えてどのように画面のフィールドに値をセットすればよいでしょうか。 よろしくお願いします。

  • アクセスのフィールドに値をペースト(VB・Access)

    Visual Basic 2005 Express Editionで、 フォーム上のボタンをクリックすると変数内の文字列を Accessフォームの特定のフィールドにセットするというVBを作りたいのですが、 AccessのVBは未経験であるため難儀しております。 Accessのフィールドに値を入れるところがわかりません。 AccessVB初心者の同僚は以下のように教えてくれましたがまったく動きません。 Dim copy_text Dim myAccess copy_text = "○○株式会社" set myAccess = CreateObject("Access.Application") myAccess.Forms("フォーム1").Controls("会社名").text = copy_text 本来"○○株式会社"は変数ではなくクリップボード内に入っています。 なのでクリップボード内の値をアクセスのフィールドにペーストするのでもかまいません。 ネットはいろいろ調べていますが、未経験の自分は基礎編・入門編であっても理解できません。 未経験の自分が作ることに問題がありますが、他にやる人がいないので仕方がありません。 どなたか助けて下さい(涙)

  • アクセス2007 VBA 並べ替え

    テーブル1のフィールド1にデータを入れ それを元に帳票フォームを作成しました。 フォームヘッダー部分に 昇順ボタンと降順ボタンを作り、 ボタンを押すごとに並び替えを行いたいのですが どのようなVBAコードを書けばいいのかわかりません。 命令分としては、 「フォームに表示されるテーブル1のフィールド1データの 昇順に並べ替える」です。 SQLを使う方法ではなく、 DocmdかacCmdを使う方法が希望です。 アクセスのヘルプの ----------------------------------------- Access 開発者用リファレンス Form."OrderBy/並べ替え" プロパティ ----------------------------------------- を見ると、 ----------------------------------------- 構文 式.OrderBy 式 Form オブジェクトを表す変数です。 ----------------------------------------- と書いてありますがこの式がわからないのでご教授よろしくお願いします。

  • 30分ごとに更新

    現在前任者の作った ACCESS VBAのシステムのメンテナンスを任されています。 このシステムではフォームのボタンが押されるたびに (1)適当な値をTimerIntervalにセット。 (2)処理フラグ変数に値をセット。 (3)タイマー処理時に処理フラグ変数の値によっていろいろな処理を行う。 というものなのですが、 今回新しい仕様として、30分ごとに自動で更新処理を行う事になりました。 そこで教えていただきたいのですが、30分ごとに更新させるにはどのようにすればよいでしょうか? (ボタンを押すたびにtimerintervalが変更されてしまうのでいい時間の計り方がわからないです。) 更新するための更新ボタンはフォーム上にあります。 またこのシステムのなのですが、windowsの制限付きユーザーで ログインした状態で使用しようとすると、 「読み取り専用です」 とでて使用できないのですが、VBAを使ったシステムは Windowsの制限付きユーザーでは使用できないのでしょうか? (管理者権限のあるユーザーでログインすると使用できます。) ACCESSのバージョンは2003を使用しています。 よろしくお願いします。

  • 2回目に画面のレコードセットの値が読めない

    メインフォームとサブフォームの画面゛て レコードソースは、ワークテーブルを参照し メインフォームの保存ボタンの処理で、 Private Sub 保存ボタン_Click()  Set mySubFm = Me![テーブル子].Form  Set myParFm = Forms(Me.name) '<== 親フォーム  Set Rec1 = myParFm.RecordsetClone  Set Rec2 = mySubFm.RecordsetClone  Lng受注ID = Rec1.Fields("受注ID").Value  Dim Rtn As Integer  ・レコードセットのデータを、本テーブルに更新する処理  ・自動採番した番号を、レコードセットのIDのフィールドにセット   Rec1.Edit   Rec1.Fields("ID").value = newID   Rec1.Update  ・Me.Requery '<== メインフォームの画面を更新  ・mySubFm.Requery '<==サブフォームの画面を更新  Set Rec1 = Nothing   Set Rec2 = nothing End Sub この処理を一度行い、更に、画面のサブレコードの値を変更して、保存ボタンを再度押すと、 Lng受注ID = Rec1.Fields("受注ID").Value の行で、 「オブジェクトが正しくないか、現在設定されていません」というエラーになります。 この原因はどうしたら解決出来ますでしょうか? よろしくお願いします。

  • VBAの処理待ち画面について

    こんにちは VBAの初心者なんです。  VBAのデータ検索処理、超時間がかかりそうです。ですが、検索ボタン押下時に、処理待ち画面を表示させ、検索が終ったら、処理待ち画面を 閉じる仕様になりました 下記のように、なかなかうまくいけませんでした。 Private Sub CommandButton1_Click() 'userform6は処置待ちフォーム userform6.show '検索処理 検索処理() userform6.hide end sub ご存知の方がいらっしゃいましたら、ぜひ、お力を貸していただきたい......

  • VBAのフォームについて

    今、悩んでいるというか、不思議に思っていることがあります。 ACCESS2003 VBAで、VBAコードでメインのフォームから、ある帳票フォームのインスタンスを作成しています。メインフォームのモジュールに以下のように記述し、 Dim 帳票1 as Form で、ボタンのクリックイベントで、 set 帳票1 = New Form_帳票の元フォーム とインスタンスを生成します。更に、この帳票フォームには、同様に子フォームを持っています。こちらも同様に帳票フォームモジュールに、 Dim 詳細1 as Form として、あるボタンのクリックイベントに、 set 詳細1 = New Form_詳細フォーム と、しています。ここで、帳票1の閉じるボタンを押しても、詳細1のフォームは、閉じません。 同様に、帳票の元フォームに Dim 帳票2 as form ボタンクリックで、 Set 帳票2 = New Form_帳票2の元フォーム とします。さらに帳票2の元フォームには、 Dim Child帳票 as Form ボタンクリックで、 Set Child帳票 = New Form_帳票2の元フォーム としています。 これで、Child帳票は、いくつもいくつもインスタンス化されます。そこで、今までの動作に準じて、たくさんあるChild帳票の大元を閉じると、こちらは子フォームが全部閉じます。例えば10個子フォームを作って、途中を閉じるとちゃんとその子だけが閉じます。最初の例の帳票1フォームを閉じても、詳細1フォームが閉じないのと、何が違うのか分かりません。私は、フォームが閉じるときには、そのメンバクラス(フォーム)は、破壊されるものだと思っていたのですが、そうでもないようです。どなたかわかりやすく、教えていただけないでしょうか?

  • AccessのVBAにおいて,アクセスフォームに表示されている「値」を

    AccessのVBAにおいて,アクセスフォームに表示されている「値」を変数の中に格納したい。  例えば,オートフォームの単票形式でフォームを作成した場合,「番号」「製品」といったフィールドが2個あるテーブルを使うと,「番号」「製品」という名前のテキストボックスが2個ほどできます。 (フィールド名やテキストボックス名は問題ではありません。) このフォーム上に「ボタン」を配置し,このボタンをクリックした時に,「製品」というテキストボックスの内容を,メッセージボックスで表示させたい。 MsgBox (Me.製品.Text) と書いてもエラーとなります。 実際には,このフォームで欲しいデータを見つけた時,ボタンクリックで,テキストボックスに表示されている内容をグローバル変数に格納したいのですが,方法が分かりません。 Access 初心者です。どなたかよろしくお願いします。

  • 3つのテキストボックスの値を1つのフィールドに保存

    ご指南ください フォーム上の3つのテキストボックスの値Q ・S・ DをAというテーブルのBというフィールドに保存したいのです   Bフィールド値 QSD としたいのです よろしくお願いいたします ( アクセス2003 OS XP )

  • サブルーチン(共通の処理)の作り方

    VB6.0の時までは、標準モジュールやフォームモジュールにサブルーチン(共通の処理)を作って、他のフォームモジュールから呼び出しができるようになっていましたが、VisualBasic2005ではできないのでしょうか?共通のサブルーチンを作成する方法を教えてください。よろしくお願いします。