前提・実現したいこと
フォーム.テキストボックス1~40のコントロールソースに直接計算式を
記述するのは修正があったときに面倒なので非連結にしたい。
なのでVBAでテキストボックス140のコントロールソースに40のそれぞれのテキストボックスの値を入れた計算式を追加したい。
for文などで1
現状はテキストボックス1~40までのコントロールソースに
for文で文字列を入れることはできてます。
問題は下記の[txt_g_o_a1]、[txt_o_kara1]、[txt_b_o_a1]の1~40まで
あるフィールドをどうやって参照すればいいのか悩んでいます。
VBA
1For i = 1 To 40 Step 1 2 Me.Controls(txtName_wt_o_a & i).ControlSource = _ 3 "=([txt_g_o_a1]-[txt_o_kara1])*1/1000*[txt_ml_o_a]/1000*100/[txt_smp_g_a]*[txt_b_o_a1]" 4 Next i
該当のソースコード
VBA
1'////////////////////////////////////////////////////////// 2' フォーム:描画時処理 3'////////////////////////////////////////////////////////// 4Private Sub Form_Resize() 5On Error GoTo Err_Proc 6 7 ' 初期化処理 8 Call InitialSettigs 9 10Exit_Proc: 11 Exit Sub 12 13Err_Proc: 14 MsgBox Err.Description 15 Resume Exit_Proc 16End Sub 17'////////////////////////////////////////////////////////// 18' 初期設定 19'////////////////////////////////////////////////////////// 20Private Sub InitialSettigs() 21On Error GoTo Err_Proc 22 Dim i As Long '変数 23 Dim txtName_smp_g_a As String: txtName_smp_g_a = "txt_smp_g_a" 'サンプル重量a 24 Dim txtName_smp_g_b As String: txtName_smp_g_b = "txt_smp_g_b" 'サンプル重量b 25 Dim txtName_ml_o_a As String: txtName_ml_o_a = "txt_ml_o_a" '王水液量a 26 Dim txtName_ml_o_b As String: txtName_ml_o_b = "txt_ml_o_b" '王水液量b 27 Dim txtName_o_kara As String: txtName_o_kara = "txt_o_kara" 'カラ 28 Dim txtName_g_o_a As String: txtName_g_o_a = "txt_g_o_a" '重量a 29 Dim txtName_g_o_b As String: txtName_g_o_b = "txt_g_o_b" '重量b 30 Dim txtName_b_o_a As String: txtName_b_o_a = "txt_b_o_a" '希釈倍率a 31 Dim txtName_b_o_b As String: txtName_b_o_b = "txt_b_o_b" '希釈倍率b 32 Dim txtName_wt_o_a As String: txtName_wt_o_a = "txt_wt_o_a" '(wt%)a 33 Dim txtName_wt_o_b As String: txtName_wt_o_b = "txt_wt_o_b" '(wt%)b 34 35 For i = 1 To 40 Step 1 36 Me.Controls(txtName_wt_o_a & i).ControlSource = _ 37 "=([txt_g_o_a1]-[txt_o_kara1])*1/1000*[txt_ml_o_a]/1000*100/[txt_smp_g_a]*[txt_b_o_a1]" 38 Next i 39 40Exit_Proc: 41 Exit Sub 42 43Err_Proc: 44 MsgBox (Err.Number & ", " & Err.Description) 45 Resume Exit_Proc 46End Sub 47
試したこと
下記のように試しましたが、”=文字列"をそのままコントロールソース
に入れている為かうまく参照できませんでした。
VBA
1For i = 1 To 40 Step 1 2 Me.Controls(txtName_wt_o_a & i).ControlSource = _ 3 "=([txtName_g_o_a & i] - [txtName_o_kara & i]) * 1 / 1000 * [txtName_ml_o_a] / 1000 * 100 / [txtName_smp_g_a] * [txtName_b_o_a & i]" 4 Next i
補足情報(FW/ツールのバージョンなど)
Windows10,ACCESS2016
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/31 01:37