フォーム間でtxtbox値の渡し方法を教えてください!

このQ&Aのポイント
  • フォーム間でtxtbox値を渡す方法について質問です。
  • 現在、OpenArgsを使用してtxtboxの値を渡そうとしていますが、うまくいっていません。
  • 具体的なコードを教えていただけると助かります。
回答を見る
  • ベストアンサー

フォーム間でtxtbox値の渡しで教えてください!

フォーム間でtxtbox値の渡しで教えてください! いつもお世話になっております。今回もいきずまり皆様のお力をお貸ください。 フォーム1からフォーム2を開く時にOpenArgsでtxtboxの値を複数渡し、フォーム2の開くときに分解しようと考えています。 下記コードでやってみたのですが、txtboxの値では無く"txtコード"と"txt性別"2つの文字列を渡しているようです。 txtboxの中の値を渡すにはどのようにしたらよいのか教えてください。 フォーム1のcmdクリック時 DoCmd.OpenForm "フォーム2", , , , acFormReadOnly, , "txtコード/txt性別" フォーム2の開く時 Dim n As Integer Dim strコード As String Dim str性別 As String n = InStr(Me.OpenArgs, "/") strコード = Left(Me.OpenArgs, n - 1) str性別 = Mid(Me.OpenArgs, n + 1) Me!txtコード = strコード Me!txt性別 = str性別 ・・・で結果は txtコードに"txtコード" txt性別に"txt性別"となってしまいます。アドバイス宜しくお願いいたします。

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

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

何の言語か分かりませんが、 フォーム1のcmdクリック時 DoCmd.OpenForm "フォーム2", , , , acFormReadOnly, , txtコード & "/" & txt性別 では?

KOUSUKE0409
質問者

お礼

返信ありがとうございます。 説明不足で申し訳ありませんでした! xp access2003 で作成しております、nag0720さんの記述で出来ました。 大変助かりました、ありがとうございます。 過去ログで"値1/値2"の記述で複数の値を渡していたので鵜呑みにしていました! また宜しくお願いいたします。

その他の回答 (1)

noname#182251
noname#182251
回答No.2

VBAはほとんど知りませんが >DoCmd.OpenForm "フォーム2", , , , acFormReadOnly, , "txtコード/txt性別" と書けば OpenArgs は "txtコード/txt性別" と云う文字列になりますから、結果は当然と思われます DoCmd.OpenForm "フォーム2", , , , acFormReadOnly, , me.txtコード + "/" + me.txt性別 などは当てずっぽうですが、工夫してみては?

KOUSUKE0409
質問者

お礼

返信ありがとうございます。 nag0720さんに教えて頂いた記述でできました! 自分でも "で囲めば文字列だわな・・・っとは思っていましたが、過去ログで調べた所その記述だったもので・・・ また機会がありましたら宜しくお願いいたします。

関連するQ&A

  • access開いているフォームのモードをコマンドボタンで切り替えたい!

    access開いているフォームのモードをコマンドボタンで切り替えたい! acFormReadOnlyで開いているフォームをtxtBoxの値を消さずに acFormEditに切り替えたいのですが可能ですか? 返答お願いいたします。

  • エクセルVBAのユーザーフォームにセルデータを

    Excel2007を使っています。 VBA初心者ですがユーザーフォームのテキストフォームにエクセル内のセルデータを表示させたいと考えています。 以下のコードをユーザーフォームのコードに書いてユーザーフォームを走らせましたがユーザーフォームは表示するのですがデータがまったく表示されません。 どなたかご教授いただけませんでしょうか。 Sub Farst() Dim Data1 As String Dim Data2 As String Dim Data3 As String Dim Data4 As String Dim Data5 As String Dim Data6 As String Dim Data7 As String Dim Data8 As String Dim Data9 As String Dim Data10 As String Dim ActiveRow As String ActiveRow = 4 With Worksheets("MDH,MDO") Data1 = .Cells(ActiveRow, 1) Data2 = .Cells(ActiveRow, 2) Data3 = .Cells(ActiveRow, 3) Data4 = .Cells(ActiveRow, 4) Me.TextBox1連番.Text = Data1 Me.TextBox2品番.Text = Data2 Me.TextBox3品番2.Text = Data3 Me.TextBox4品番3.Text = Data4 End With End Sub

  • 帳票フォームでカーソル移動

    帳票フォームでカーソル移動 お世話になります、帳票フォームでフォームヘッダーに非連結txtBoxを2つ置き(txt適用開始日、txt消費税率) 詳細にクエリのフィールドを表示させています。 下記コードでフォームのダブルクリック時にヘッダーのtxtBoxにレコードを表示させています、 その後カーソルをヘッダーの”txt消費税率”に移動させたく DoCmd.GoToControl "txt消費税率" Forms!フォーム名.txt消費税率.SetFocus Me!txt消費税率.SetFocus 色々試しては見たのですがカーソル移動してくれません! アドバイス宜しくお願いいたします。 Dim adoCN As ADODB.Connection   Dim adoRS As ADODB.Recordset Dim strSQL As String Set adoCN = Application.CurrentProject.Connection strSQL = " SELECT *" _ & " FROM ta02消費税" _ & " WHERE 摘要開始日= #" & Me!txt摘要開始日2 & "#" Set adoRS = adoCN.Execute(strSQL) If adoRS.EOF = False Then Me!txt摘要開始日.Value = adoRS("摘要開始日").Value Me!txt消費税率.Value = adoRS("消費税率").Value * 100 Else MsgBox "該当データがありません", vbOKOnly + vbExclamation, "消費税" Cancel = True Exit Sub adoRS.Close adoCN.Close Set adoRS = Nothing Set adoCN = Nothing End If DoCmd.GoToControl "txt消費税率" ←’タイミングも色々ずらして試したのですが・・・ Me!cmd登録.Visible = False Me!cmd削除.Visible = True End Sub

  • Accessのフォームで値が見た目変更されない

    はじめまして、こんにちは。 Accessを使用して自社ツールを作成しています。 バージョン:Access2003 OS:WindowsXP フォームのレコードソースに、あるテーブルを連結させて一覧にして表示しています。 複数のコンボボックスを用意して、選択された値によって検索をかけ、 レコードソースの値を書き換えて再表示しています。 この検索はコンボボックスの更新後処理にVBAでSQLを記述して行っています。 Dim str_sql As String str_sql = str_sql & "select * from T_テーブルA where ○○コード = 1" Me.RecordSource = str_sql かなり省略していますが、実際はコンボボックスで選択された値によって SQLを生成しています。 フォームにはtxt_件数という名前でテキストボックスを用意してあります。 レコードソースを設定した後に、同じ条件でカウントし件数を表示しようと しているのですが、これがうまくいきません。 Me!txt_件数 = Nz(DCount("*", "T_テーブルA", "○○コード = 1"), 0) 件数が1件でもある時は正しい値が表示されます。 0件の場合は前回の表示のまま見た目上かわりません。 例) 1回目の検索で200件→テキストボックス[200]と表示 2回目の検索で0件→テキストボックス[200]と表示 3回目の検索で10件→テキストボックス[10]と表示 このような感じです。 ただし、実際は正しい値[0]が設定されているみたいです。 別のウインドウを一度フォームにかぶせて避けると[0]になりますし、、 2回目で[200]と表示されているものをコピーすると[0]がコピーされます。 Me!txt_件数 = Nz(DCount("*", "T_テーブルA", "○○コード = 1"), 0) If Me!txt_件数 = 0 Then Me!txt_件数 = 0 End If 馬鹿げていますが、このようにしても正しく[0]が表示されませんでした。 Accessを再起動しても状態は変わらず、困っています。 環境の問題でしょうか? 解決策など解る方いらっしゃいましたら教えてください。 よろしくお願いいたします。

  • エラーが出ます

    Stressmanと言います。 ACCESS2002を使っています。 今、「報告書」というフォームから「顧客」というフォームを開きます。 「顧客」フォームにはサブフォームとして「顧客一覧」のデータシート が組み込まれています。 「顧客一覧」の該当する行をダブルクリックしたら、フォームを閉じて、 「報告書」フォームの「顧客ID」にダブルクリックした顧客の「顧客ID」 がコピーされる。っていうのを実現させようとしています。 下記がそのコードです。 まず「報告書」フォームのコマンドボタンに下記のコードを設定 「顧客」フォームを開きます。 Private Sub コマンド110_Click() DoCmd.OpenForm "顧客", , , , acFormAdd, , Me.Name End Sub そして、「顧客」のサブフォームの「顧客一覧」(データシート)の ダブルクリックのイベントのところに下記のコードを設定 Private Sub Form_DblClick(Cancel As Integer) Dim strFormName As String strFormName = Me.OpenArgs ← エラー Forms(strFormName).[顧客ID] = Me.[Frm_04顧客マスタ_サブフォーム].Form.[顧客ID] DoCmd.Close acForm, Me.Name End Sub エラーがでるのがここです。 どうやら、Me.OpenArgsの値がNullらしいのですが、 どうやって回避すればいいのか、分かりません。 分かりにくい説明ですが、宜しくお願いします

  • 値渡し?参照渡し?をやりたい

    「#00B7EF」を「&HEFB700」にする関数を作ってるのですが 初心者のため躓いてしまいました。 コードは ++++++++++++++++++++++++++++++++++++++++++++++++++++ Sub 色コード() myStr = "#00B7EF" Debug.Print 色コード変換(myStr) End Sub Function 色コード変換() Dim myStr1 As String Dim myStr2 As String Dim myStr3 As String myStr1 = Mid(myStr, 2, 2) myStr2 = Mid(myStr, 4, 2) myStr3 = Mid(myStr, 6, 2) 色コード変換 = "&H" & myStr3 & myStr2 & myStr1 End Function ++++++++++++++++++++++++++++++++++++++++++++++++++++ を作ったのですが、 End Functionを過ぎてから 実行時エラー_型が一致しません。(Error13) になります。 Sub 色コード()の時に、型を宣言してないからでしょうか? しかし、 Function 色コード変換(as String) にすると赤くなってしまいます。 ご教授よろしくお願いします。

  • Functionの使い方が分かりません。

    ACCESS 2013環境でVBAを使用しています。 プログラムが長い上、使用する箇所が多くて困っています。 Functionで、使いたい時だけ呼び出したいのですが うまく行きません。 二つのテキストボックスに入力された、文字を組み合わせて 文字列を生成するプロシージャを作成しています。  txt1の値が、岡山  txt2の値が、オカヤマ の時 先頭の文字列が ア行、続きは _岡山 となるよう AscW関数で文字コードで一度抽出し, select文で判別しています。 コードは --------------------------------------------- Private Sub コマンド1_Click() Dim kanji As String Dim katakana As Integer Dim sento As String Dim hensuu As String kanji = Me.txt1 katakana = AscW(Left(Me.txt2,1)) Select Case katakana Case 12450 To 12458 sento = "ア行" Case 12459 To 12468 sento = "カ行" ~(中略)~    Case Else End Select hensuu = sento & "_" & kanji MsgBox hensuu End Sub --------------------------------------------- となっています。 Select Case文が長いのと、複数のフォーム上で実行させるボタンごとに 同じコードを記述していて、最近Accessの起動が遅くなってきました。 Select文をFunctionから呼び出し、最終的にはモジュールから呼び出しに 書き換えたいのですが、書き方が良く分かりません。 試したコード --------------------------------------------- Function moji(ByRef katakana As Integer,sento As String) Select Case katakana Case 12450 To 12458 sento = "ア行" Case 12459 To 12468 sento = "カ行" ~(中略)~    Case Else End Select End Function Private Sub コマンド1_Click() Dim kanji As String Dim katakana As Integer Dim sento As String Dim hensuu As String kanji = Me.txt1 katakana = AscW(Left(Me.txt2,1)) sento = moji(katakana) hensuu = sento & "_" & kanji MsgBox hensuu End Sub --------------------------------------------- 多分、大きく間違っているのではないかと思うのですが どのように修正したらよいでしょうか

  • ウイザードからのVBAでクエリー名をコードでなく文字にするには

    マシンによっては、以下の2の形式でウイザードを使ったVBAで表示されるのですが 1の形のマシンがありどこの設定をすればよいか教えてください ACCESSXPです。 1.コードになっている Dim stDocName As String Dim stLinkCriteria As String stDocName = ChrW(-30163) & ChrW(23450) & ChrW(12501) & ChrW(12457) & ChrW(12540) & ChrW(12512) DoCmd.OpenForm stDocName, , , stLinkCriteria 2、日本字になっている Dim stDocName As String Dim stLinkCriteria As String stDocName = "設定フォーム" DoCmd.OpenForm stDocName, , , stLinkCriteria よろしくお願いします

  • Accessの検索フォーム作成で。

    Access2000です。 一覧テーブルは ・名前 ・項目1 ・評価1 ・項目2 ・評価2 となっていて、 山田太朗  | タバコのポイ捨てはしない  | 5 | 10分前行動 | 4 | 前田前   | 交通ルールを守る      | 5 | 挨拶をする  | 4 | 大坪拳   | 10分前行動        | 4 | 挨拶をする  | 5 | のようになっています。 これをもとに「検索フォーム」をデザインフォームで、 名前   [     ] 項目1  [     ] 項目2  [     ] 項目3  [     ] と作成し、「検索」というボタンを押すと、「検索結果フォーム」に検索結果が出るようにしました。 検索ボタンは Private Sub コマンド9_Click() Dim SQL As String Dim WhereCond As String Dim condName As String Dim condKoumoku1 As String Dim condKoumoku2 As String Dim condKoumoku3 As String WhereCond = "" '名前 If Me!名前.Value <> "" Then condName = "(一覧.名前 like '*" & Me!名前.Value & "*')" WhereCond = WhereCond & " and " & condName End If '項目1 If Me!項目1.Value <> "" Then condKoumoku1 = "(一覧.項目1 like '*" & Me!項目1.Value & "*')" WhereCond = WhereCond & " and " & condKoumoku1 End If : WhereCond = Mid(WhereCond, 6) DoCmd.OpenForm "検索結果フォーム", acNormal, , WhereCond End Sub となっています。 そこで、検索フォームで 項目に検索値を入れた場合、一覧の項目すべての中から検索できるようにするにはどうしたらいいのでしょうか? また、今の状態ですとand検索ですが、or検索するにはどのようにしたらいいでしょうか?

  • 非連結フォームにレコード表示したい!

    フォームにレコードを表示させたいのですが、 ”FROM 句の構文エラー”と出ます、ヘルプを参照すると何故か表示されません! 「strSQL~Me!年号コード」までの間が間違っているのでしょうか? アドバイス宜しくお願いいたします。 Dim adoCON As ADODB.Connectio Dim adoREC As ADODB.Recordset Dim strSQL As String Set adoCON = Application.CurrentProject.Connection strSQL = "SELECT *" _ & "FROM ta01年号" _ & "WHERE 年号コード =" & Me!txt年号コード Set adoREC = adoCON.Execute(strSQL) If adoREC.EOF = False Then Me!txt年号コード.Value = adoREC(年号コード).Value Me!txt年号.Value = adoREC("年号").Value Else MsgBox "該当データがありません", vbOKOnly + vbExclamation, "年号" Cancel = True Exit Sub adoREC.Close adoCON.Close Set adoREC = Nothing Set adoCON = Nothing End If

専門家に質問してみよう