|
▼やまあらし さん:
>txtBox1〜40のどれかの値が、変更するたびに
>txt合計金額 と txtおつり金額 の値が変わるように
>できますか?
前のサンプルでは 隠しシートのChangeイベントプロシージャ
に、セルの値が変更したら シートの[C2]セルの合計金額を
UserFormの txt合計金額 に転記する処理を書いてましたが、
シートのほうに書かずに UserForm内に書いて同じことが
できましたね。
(以下、そのサンプルです。 隠しシートのイベント
プロシージャのほうは 削除しちゃってお試しください)
'---------------------------------------
Option Explicit
Private WithEvents WkSheet As Excel.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
Private Sub WkSheet_Change(ByVal Target As Range) '◆追加
Dim r As Range
Set r = Intersect(Target, WkSheet.[A1:A40])
If Not r Is Nothing Then
txt合計金額.Text = WkSheet.[C2].Value
End If
End Sub
|
|