• ベストアンサー

Access2000:フォームのテキストフォームに値を代入Part2

前回も質問して、また違った改良が入りそうなので質問させていただきます。 マクロに「フォームを開く」を登録し、テキストフォーム値を入れることをこれまで手動でしてきました。 今回VBAを使って自動フォーム登録したいと考えています。 上記マクロをVisualBasic変換し、新たなマクロにこのVisualBasicをプロシージャとして登録させます。 DoCmd.OpenForm "フォーム名", acNormal, "", "", , acNormal 変換後上記のようなフォームを立ち上げるプログラムが生成されました。上記フォームのテキストフォーム部に値を代入させたいばあいどういう記述をしてあげればよろしいでしょうか? テキストフォームの名前は”年月”です。 Me![年月]=date ではうまくいきません。 よろしくお願いいたします。

  • fm0606
  • お礼率13% (100/761)

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

  • ベストアンサー
noname#22222
noname#22222
回答No.4

質問者の作業を再現してみました。 '------------------------------------------------------------ ' マクロ1 ' '------------------------------------------------------------ Function マクロ1() On Error GoTo マクロ1_Err   DoCmd.OpenForm "フォーム1", acNormal, "", "", , acNormal   Forms("フォーム1").Controls("日付") = Date マクロ1_Exit:   Exit Function マクロ1_Err:   MsgBox Error$   Resume マクロ1_Exit End Function と、やりたいのでしょう!

fm0606
質問者

お礼

ありがとうございます。 まさにそのとおりでございます。 つたない質問文で申し訳ございませんでした。

その他の回答 (4)

  • maaaa
  • ベストアンサー率14% (4/27)
回答No.5

No.3さん、補足ありがとうございます あとから、ふっと、思ったのですが date、とあるので そのフォームに日付のフィールド(項目)があって 手で、いちいち、入力せずとも、今日の日付を 入れたい、のでしょうか これだと、問題のフォームをデザインで開き その日付フィールドを選んだら、右クイック そこに、プロパティがあるから選んでください でたら、データタブを選ぶと 規定値、という項目があります ここに、 =date() といれてください、(カッコ忘れず) これで、あたらしくレコードを入れようとすると  日付がはいります

回答No.3

う~ん、No2さんが言ってることがVBAでの記述なんだけどなぁ… 開いたフォームのプロパティをあけると、 「フォームを開く時」とかってところありますよね? そこに Me![年月]=date と書くと出来ますよ。 この方法がNo2さんも言ってるVBAの方法です。

  • maaaa
  • ベストアンサー率14% (4/27)
回答No.2

ご指摘のヶ所からは、フォームを開くこと、と 特定のレコードを開く、ことしか、条件付けできません フォームを開いた時に特別の値をいれたいのであれば そのフォームをデザインビューで開いて ’開く時’というプロパティを使ってください 開く得→コードビルダー、で、例の関数の枠組み が出ますから、 年月=date [年月]=date どちらでもいいと思います。 また、年月、というコントロールは非連続フィールド でないと、ダメかも知れません

fm0606
質問者

補足

すみません、意味がよくわかりません。 あくまでもVBA(プログラム)上で行いたいので フォームのプロパティに埋め込むことは 考えておりません。

回答No.1

Me![年月]=date はどこに書かれていますか? Meと言っているのでフォームの「立ち上げ時」とかに書くとうまくいきますょ。

fm0606
質問者

補足

今までは DoCmd.OpenForm "フォーム名", acNormal, "", "", , acNormal の下の行に Me![年月]=date と書いていました。 立ち上げ時というのは、どの部分のことでしょうか?

関連するQ&A

  • ACCESS フォームの値がすぐに表示されない

    フォームの値がすぐに表示されない。 宜しくお願い致します。皆様の知恵をお貸しください。 WinXPでACCESS2000を使っております。 テーブル_在庫には 取引先|商品名|買取金額|売上金額|日付のフィールドがあり A社|みかん|0|10000|2012/11/13 A社|りんご|10000|0|2012/11/13 B社|ぶどう|5000|0|2012/11/13 C社|かき|0|3000|2012/11/13 というレコードがあります。 フォーム_取引先のコンボボックスで、A社を選びコマンドボタンで、 クエリ_取引先買取、クエリ_取引先売上 を実行して、A社だけの取引を抽出し、その結果を フォーム_取引先買取とフォーム_取引先売上 に、表形式で表示させています。 このままでは、フォームが2つになるので、新たに基になるテーブルも クエリも持たない、フォーム_売買を作りました。 このフォーム_売買にテキストボックスを6つ作り次のようにしました。 テキストボックス|コントロールソース ---------------------------------------- テキスト1(取引先)|=Forms![取引先]![コンボ1] テキスト2(買取金額)|=Forms![買取]![テキスト1] テキスト3(売上金額)|=Forms![売上]![テキスト1] テキスト4(買取報償料)|非連結 テキスト5(売上報償料)|非連結 テキスト6(合計金額)|=[テキスト2]+[テキスト4]-[テキスト3]-[テキスト5] ここで、問題になっているのが、フォーム_売買を表示させた時に、テキスト1は 普通にA社と表示されているのですが、テキスト2とテキスト3に金額が表示され ません。 しかし、テキスト4もしくはテキスト5に金額を入力すると、表示されるようになり ます。 テキスト4とテキスト5のどちらかには必ず金額を入力するので、このままでも とりあえずは計算出来ているのですが、できれば、フォームが表示された時に 初めからテキスト2とテキスト3には金額が入っていたほうがいいと思い、あれ これ試してみたのですが、出来ませんでした。 フォーム_取引先のコマンドボタンは次のように実行しています。 Dim stDocName As String Dim stDocName1 As String stDocName = "取引先売上" DoCmd.OpenQuery stDocName, acNormal, acEdit stDocName1 = "取引先買取" DoCmd.OpenQuery stDocName1, acNormal, acEdit DoCmd.OpenForm stDocName, acNormal DoCmd.OpenForm stDocName1, acNormal DoCmd.OpenForm "売買", acNormal どうすれば、フォーム_売買が表示された時に、テキスト2とテキスト3に金額が 入っているようになるのでしょうか。 素人が見よう見まねで作っておりますので、おかしい点が多々あるかと思い ますが、ご教授のほど、よろしくお願い致します。

  • 「DoCmd.OpenForm」が実行できない(vbaでフォームを開きたい)

    「フォーム1を開く」vbaで行ないたいのですが エラーになってしまいます。 Sub test1() DoCmd.OpenForm , acNormal, フォーム1 End Sub は「変数が定義されていません」と表示され (「変数の宣言を強制する」にチェックを入れています) Sub test2() DoCmd.OpenForm , acNormal, "フォーム1" End Sub は「引数は省略できません」となります。 Sub test1() DoCmd.OpenForm , フォーム1, acNormal End Sub Sub test2() DoCmd.OpenForm , "フォーム1", acNormal End Sub これにしても同じでした。 「OpenForm」をヘルプで調べてみたところ 「expression 」と「FormName」が「 必ず指定します。」でした。 「expression 」がないからだめなのでしょうか? すいません、助けてください。 よろしくお願いします。

  • Accessの検索フォーム

    以前にも似たような質問をして、その時は解決したのですが、また同じようなことでつまづいて、以前の回答をみて、 そのとおりにやってるつもりなのに、できなくて…。 テーブル1とフォーム1・フォーム2があります。 フォーム1に入力された情報をもとに、テーブル1の内容を検索して、フォーム2に表示するものを作成しています。 テーブル1には「***.***.**.☆」(情報)という形の情報が入っています。 *の部分の桁数は固定で☆は不定形です。(テキスト形式) フォーム1に入力された情報は「(***.***.)**.*」(検索1)や「(***.***.)**.**」(検索2)などです。 ※()内は入力せず テーブル1の情報の9文字目以降と、フォーム1に入力された情報を比べたくて、以下のようなものを作成しました。 (多少省略等があります) condKensaku = "(Mid(Val(テーブル1.情報),9) between " & Val(Me!検索1.Value) & " and " & Val(Me!検索2.Value) & ")" wherecond = condKensaku DoCmd.OpenForm "フォーム2", acNormal, WhereCond これを実行すると 実行時エラー '2501': OpenForm アクションの実行はキャンセルされました。 と出て、デバッグを押すと、 DoCmd.OpenForm "フォーム2", acNormal, WhereCond の行が黄色になります。

  • フォームから別フォームを開くには?

    こんにちは。 Access2010を使っています。 開いているフォームから別のフォームを開きたいのですが、その後ろ側のみにワイルドカード(「*」マーク)を入れたいのですが、上手くいきません。 いろいろやってみましたが、「メモリ不足です」となってしまい、上手くいきません。下記コードにどのようにしてワイルドカードを入れたらよいでしょうか? DoCmd.OpenForm "開きたいフォーム名", acNormal, "", "[キー名]=[Forms]![開いているフォーム名]![キー名]", , acNormal ご教授よろしくお願い致します。

  • アクセス 起動時に2つのフォームを表示したい

    Form_Openのイベントプロシージャーで DoCmd.OpenForm でもう一つのフォームを開くしかないですか? 起動時の設定で二つのフォームを指定することは不可能でしょうか?

  • アクセスのマクロ

    友人がアクセスで作ったマクロです。3行目で止まってしまいます。どこが悪いのでしょうか。(私は全くの素人でわかりません) Private Sub 記載事項入力ボタン_Click() DoCmd.Close acForm, "初期画面", acSaveYes DoCmd.OpenForm "入力フォーム", acNormal ←ここ End Sub

  • accessのこのオブジェクトに値を代入することはできません エラー

    accessでデータベース参照システムを作成しているのですが、このオブジェクトに値を代入することはできません というエラーがでています。 色々過去ログを調べたのですが、私の内容と該当しそうなのがみつかりませんでした。 TABLE_A 親番号 子番号 項目a... b.... 3 , 1 , xxxxxxxxxxx 3 , 2 , xxxxxxxxxxxx TABLE_AとリンクしているフォームXを開きます。 開いたあと、filterをかけています。(例 filter : 親番号 = 3) そのフォームには、コントロールソースがいくつもあります。 編集ロックを解除して、データベースの内容を上書きしています。 新規作成時には、子番号という、テーブルのキー情報にだけ値を入れて(既存のmax値+1)、その他の項目を全てnullにして、データの新規登録を可能にさせています。 (例 : 3, 3 , xxxxxxxxのデータが作成される) ここまでは動作しています。 やりたいことは、親番号4という、TABLE_Aにない情報で、上記で、同じくフォームxを開いたあと、新規登録を可能にしたいのですが、 子番号のコントロールボックス(テキストボックス)に、1という新規番号をいれようとしたら、エラーになります。 内容は、{このオブジェクトに値を代入することはできません}です。 この解決方法がなかなかみつかりません。 説明が難しいので伝わりにくいかもしれません。 なにかありましたら、説明させて頂きます。 フォームは、 DoCmd.OpenForm stDocName, , , stLink で開いています。

  • Access すべてのフォームを開く

    おしえてくださいm__m AccessにてWindowを最小化した後に現在開いているフォームを開くVBAを 作成しようとしていますがうまくいきません。 現在はWindowを最小化した後一つのフォームを開くVBAは下記の通り作成しました DoCmd.RunCommand acCmdAppMinimize DoCmd.OpenForm "メインフォーム", acNormal しかしながら現在開いているすべてのフォームをAccess Windowを最小化した後に 開くVBAはどのように記載すればいいでしょうか 皆さまのお知恵をかしてくださいm__m

  • アクセス フォームの非連結テキストに入力VBA

    win10 office365 access365におきまして フォーム Fを開いて そのなかの非連結テキスト textが あるとしまして そこに規定の文字列 たとえば、あいう を入れたいとき Sub Sample() Dim cn As ADODB.Connection Set cn = CurrentProject.Connection DoCmd.OpenForm "F", acNormal Form![F]!text1 = "あいう" end sub フォームFは当然開くのですが 非連結のテキスト textは 空白のままです ちなみに 通常の使い方は このテキスト text1の空欄に カーソルを合わせて 文字を打ち込んで行き 最後は 既製の保存ボタンをクリックすることにより 別テーブルに非連結テキストに入力した値を保存する流れになりますが、 この非連結テキストが複数ありまして テンプレートを作りたいので 上記のようなコードを 考えました すみませんが 不足しているポイントの 御教示宜しくお願い致します

  • コマンドボタン名を取得して変数に代入したい。

    OS:windowsXp Access Version:Xp 既出でしたらすみません。 INDEXのフォームにて複数コマンドボタンを作り、それを押すと各登録フォームや集計フォームが開くようにしています。 さて、質問なのですが、コマンドボタンで別のフォームを開く時の処理を(フォーム名が違うだけで後は同じなので)まとめて書きたいのです。 現在は次のようにやっています。 ------------------------------------------------- Private Sub F_メニュー_Click() Call close_form DoCmd.OpenForm "F_メニュー", acNormal, , , acFormEdit, acWindowNormal End Sub Private Sub F_売上伝票_Click() Call close_form DoCmd.OpenForm "F_売上伝票", acNormal, , , acFormEdit, acWindowNormal End Sub      (中略) Private Sub 事業所別集計_Click() Call close_form DoCmd.OpenForm "F_事業所別集計", acNormal, , , acFormEdit, acWindowNormal End Sub Private Sub 消費税変更_Click() Call close_form DoCmd.OpenForm "F_消費税変更", acNormal, , , acFormEdit, acWindowNormal End Sub Private Sub システム終了_Click() Call close_form DoCmd.RunCommand acCmdExit End Sub Private Sub close_form() msgbx = False DoCmd.Close acForm, "index", acSaveYes End Sub ------------------------------------------------- これを  ボタン名_Click() ではなく  frm_open() 押されたボタン名を変数に取得(ボタン名=Form名にします。) DoCmd.OpenForm 押されたボタン名変数 のように共有したいのです。 どうすれば出来ますでしょうか?ご指導よろしくお願いします。

専門家に質問してみよう