|
▼やまあらし さん:
こんにちは。
それらのTextBoxをシートのセルとリンクさせて
シート上で計算させたらどうでしょう
隠しシートを使います
(このシートはUserFormを開くとき、存在チェックし、
まだ無ければ、作成することにします。)
以下は TextBoxが1〜10 の例です。
隠しシートのA列とTextBox を連動させることにします。
TextBox1に 個数を入力すると、値はただちにシートの[A1]セルに
反映されます。
以下同様にして
TextBox2 ⇔ 隠しシート[A2]
TextBox3 ⇔ 隠しシート[A3]
: :
という具合です。
隠しシートのB列に単価を書き入れておきます。
また [C2]セルには =SUMPRODUCT式を入力し 合計金額を計算させます
また [C3]セルは おつりを算出する数式 =C1-C2 を入れておきます。
こうしておくと、txt預かり金額をアクティブにすると
txt合計金額に SUMPRODUCTで計算された合計金額が表示されますので
それを参照しながら 預かり金額を入力することができます。
'--------------------------------------
Option Explicit
Private WkSheet As Worksheet
Private Sub UserForm_Initialize()
Dim i As Long
On Error Resume Next
Set WkSheet = Worksheets("Hidden")
On Error GoTo 0
If WkSheet Is Nothing Then
Set WkSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count))
With WkSheet
.Name = "Hidden"
.Visible = False
.[B1:B10].Value = Application.Transpose( _
Array(150, 200, 300, 98, 198, 298, 398, 200, 150, 300))
.[C2].Formula = "=SUMPRODUCT(A1:A10,B1:B10)"
.[C3].Formula = "=C1-C2"
End With
End If
WkSheet.[A1:A40].ClearContents
For i = 1 To 10 '40
Me("TextBox" & i).ControlSource = "Hidden!A" & i
Next
End Sub
Private Sub txt預かり金額_Enter()
txt合計金額.Text = Range("Hidden!C2").Value
End Sub
Private Sub txt預かり金額_Change()
Range("Hidden!C1").Value = Val(txt預かり金額.Text)
End Sub
Private Sub txt預かり金額_Exit(ByVal Cancel As MSForms.ReturnBoolean)
txt合計金額.Text = Range("Hidden!C2").Value
txtおつり金額.Text = Range("Hidden!C3").Value
End Sub
|
|