|
いつも質問に答えて頂き、お世話になっております。
以下に示すようなメインフォーム内のA列のComboBoxA_**を選択すると
その選択内容によって計算X or 計算Y or 計算Zのフォームが開くプログラムを作成しています。
┌────────────┐
│メインフォーム │ ┌──────┐┌──────┐
│┌──┐┌──┐┌──┐│ │計算X ││計算Y │
││A_01││B_01││C_01││ │┌─┐┌─┐││┌─┐┌─┐│
│└──┘└──┘└──┘│ ││BB││CC││││BB││CC││
│┌──┐┌──┐┌──┐│ │└─┘└─┘││└─┘└─┘│
││A_02││B_02││C_02││ └──────┘└──────┘
│└──┘└──┘└──┘│ ┌──────┐
・ │計算Z │
・ │┌─┐┌─┐│
・ ││BB││CC││
│┌──┐┌──┐┌──┐│ │└─┘└─┘│
││A_10││B_10││C_10││ └──────┘
│└──┘└──┘└──┘│ ※実際は計算種類はもっと多いです。
└────────────┘
各計算フォームを呼び出し計算することは出来たのですが、計算結果をメインフォームに記述する際に上手くいかずに困っています。どなたかお知恵をお貸し下さい。
例えば、A_01で計算Xを選択した場合
UserForm 「計算X」内で
Private Sub Button_OK_Click()
Unload 計算X
メインフォーム.B_01 = Format(BB, "#,##0.0")
メインフォーム.C_01 = Format(CC, "#,##0.0")
End Sub
と記述すれば、動作的には問題のですが、これですとA_01〜A_10の全ての対応を記述しなければなりません。計算種類も多いことから、この出力部を整理したいのです。
UserForm「メインフォーム」内で
Private Sub A_01_Exit(ByVal Cancel As MSForms.ReturnBoolean)
ComboName = 1
Call ChangeItem(A_01)
End Sub
Private Sub A_02_Exit(ByVal Cancel As MSForms.ReturnBoolean)
ComboName = 2
Call ChangeItem(A_02)
End Sub
・
・
・
Private Sub A_10_Exit(ByVal Cancel As MSForms.ReturnBoolean)
ComboName = 10
Call ChangeItem(A_10)
End Sub
を記述し、UserForm 「計算X」内で
Private Sub Button_OK_Click()
Unload 計算X
Call Calc_Output(ComboName)
End Sub
とする。
標準モジュールに
Public Sub Calc_Output(C_Name)
With Worksheets("DATA").Cells(1, 1)
.Offset(C_Name, 0).Value = "計算X" ←こちらは出来ました。
.Offset(C_Name, 1).Value = BB
.Offset(C_Name, 2).Value = CC
End With
If C_Name < 10 Then
Set BB_tmp = "メインフォーム.B_0" & C_Name
Else
Set BB_tmp = "メインフォーム.B_" & C_Name
End If
If C_Name < 10 Then
Set CC_tmp Q = "メインフォーム.B_0" & C_Name
Else
Set CC_tmp = "メインフォーム.B_" & C_Name
End If
BB_tmp = Format(BB, "#,##0.0")
CC_tmp = Format(CC, "#,##0.0")
End Sub
とすれば、出来るかな?と思ったのですが、ダメでした。
どうか回答宜しくお願いいたします。
|
|