- ベストアンサー
Access VBAでテキストボックスの値をオプションボタンに反映させる方法
- Access VBAでテキストボックスの値をオプションボタンに反映させる方法について質問です。
- テキストボックス1に入力された文字列を選択されているオプションボタンのキャプションと合わせて、テキストボックス2に反映させる方法を教えてください。
- VBA初心者のため、詳細なコードの見本や説明を教えていただけると助かります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは まずは、コマンドボタンを右クリックしてイベントのビルドでコードビルダーを 表示して、 Private Sub コマンド1_Click() Dim s As String Select Case Me.フレーム1.Value Case 1: s = Me.ラベル2.Caption Case 2: s = Me.ラベル4.Caption Case 3: s = Me.ラベル6.Caption End Select Me.テキスト2.Value = Me.テキスト1.Value & s End Sub みたいにしてはどうですか? コマンド1とか、フレーム1とか、ラベル2とかはそれぞれ実際の環境に 合わせて変更して下さい。 あまり最初から高度なコードを書こうとせずに 少しずつ動くコードが書けるようにしていくといいと思います。
その他の回答 (3)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
Private Function TestFunction(ByVal strText1 As String, _ ByVal strText2 As String) As String 【訂正】 ByVal 宣言が欠落していました。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
Option Compare Database Option Explicit Private Sub コマンド1_Click() Dim strText1 As String Dim strText2 As String If Len(Me.テキスト1 & "") > 0 Then strText1 = Me.テキスト1 strText2 = Me.Controls("オプションラベル" & Me.フレーム1.Value).Caption Me.テキスト2 = TestFunction(strText1, strText2) End If End Sub Private Function TestFunction(ByVal strText1 As String, strText2 As String) As String TestFunction = strText1 & strText2 End Function >functionプロシージャを呼び出したい! 上述のコードでは Me.テキスト2 = TestFunction(strText1, strText2) という形で呼び出しています。でも Me.テキスト2 = strText1 & strText2 と書けば事足ります。 【オプションラベル名の付け方】 オプションラベル1 オプションラベル2 オプションラベル3 としておけば Me.Controls("オプションラベル" & Me.フレーム1.Value).Caption 該当するオプションのCaptionを取得することができます。
- imogasi
- ベストアンサー率27% (4737/17069)
いまエクセル環境しか使えないのですが、やってみた UserForm1にテキストボックス2つ Frame1つ その中にOPTボタン3つ 配置 ーー OPTボタン3つのCaptionは Lサイズ Mサイズ Sサイズ ーー Private Sub CommandButton1_Click() For i = 1 To Frame1.Controls.Count If Frame1.Controls(i - 1).Value = True Then op = Frame1.Controls(i - 1).Caption End If Next TextBox2.Text = TextBox1 & op End Sub ーー TextBox1に「スカート」と入力、 「Sサイズ」のOPTボタンをクリック、 コマンドボタンをクリック。 Textbox2に「スカートSサイズ」と入りました。 ーー アクセスでも似たようなコードでできませんかね。 -- 心配事2つ ・この後どうしようというのか? なぜfunctionプロシージャを使わないといけないのか。 ーー ・>テキストボックス1の文字列と合わせる形で に、こういう方法が本当に良いのか(個人的に素人っぽいニオイがする)、本当は、VBAコードを聞くのではなく、その前に、こういうコーナーでは、識者に設計仕様を聞いてみるのがよいのでは? そのためには直面しているシチュエーションを文章で表現できなければならず、 業務関連を他人に伺わせたくないのかな。
補足
imogasi様。 回答ありがとうございます。 「自分で調べろ」方式の会社で、何の説明もないままコードを書かされているので、素人も素人、中国語の部屋状態です。 さらに言うと、今回の課題は ・テキストボックス1には特定の記号しか入力できない(入力規制) ・コマンドボタン1では、テキストボックス1と2をつなげる動作のみ(入力規制とオプションの反映は呼び出して使う) というものです。
補足
ushi2015様 回答ありがとうございます。 実は、まったくの素人が入社して一週間でやっている課題です。 オプションcaptionの反映機能はコマンド1で呼び出して使わないといけません。回答の方法だと、「s」にcase「1」が入ってしまいます。 呼ぶときに「フレームの中で選ばれたオプションのcaption」のような指定は出来ないのでしょうか。。 ほんと頓珍漢な事を言ってしまっているのでしょうね、、ごめんなさい。