標題:
[發問]
請教UserForm內有多個TextBox要如何簡化程序(感謝)
[打印本頁]
作者:
changxxx
時間:
2015-2-14 09:06
標題:
請教UserForm內有多個TextBox要如何簡化程序(感謝)
目前有70個TextBox並以第70為1~69的累計
輸入TextBox並按下Enter後就計入到TextBox70內因此在程序內寫入以下69個程序
請教如何簡化
目前尚須加入
1.按下滑鼠後清空TextBox內容
2.按下鍵盤"往上鍵","往下鍵"
因此程序會變得很長所以特來請教簡化方式.....感恩
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then TextBox70.Text = Val(TextBox70.Text) + Val(TextBox1.Text)
End Sub
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then TextBox70.Text = Val(TextBox70.Text) + Val(TextBox2.Text)
End Sub
.......
複製代碼
作者:
GBKEE
時間:
2015-2-15 16:08
回復
1#
changxxx
[attach]20261[/attach]
UserForm的程式碼
Option Explicit
Dim UserForm_Text(1 To 69) As New Class1 '宣告變數為新的物件模組
Private Sub UserForm_Initialize()
Dim i As Integer
For i = 1 To UBound(UserForm_Text)
Set UserForm_Text(i).Class_TextBox = Controls("textbox" & i)
'物件模組的Class_TextBox 設定為 Controls("textbox" & i)
Next
End Sub
複製代碼
物件類別模組的程式碼
Option Explicit
Public WithEvents Class_TextBox As MSForms.TextBox
'WithEvents 選擇性引數。表示 varname 是物件變數的關鍵字,且用來對應 ActiveX 物件所引發的事件。
'僅適用於物件類別模組中。
'您可以用 WithEvents 來個別宣告變數,但不可用來建立陣列,也不可與 New 同時使用。
Private Sub Class_TextBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
With Class_TextBox
If KeyCode = 13 Then .Parent.TextBox70.Text = Val(.Parent.TextBox70.Text) + Val(.Text)
End With
End Sub
複製代碼
作者:
changxxx
時間:
2015-2-19 16:58
:loveliness: .....非常感謝G大熱情幫忙
報告:非常成功
[attach]20282[/attach]
作者:
changxxx
時間:
2015-2-19 21:02
又無步了...只好再次求助G大
感謝萬分
目前想設置
TextBox70為1到23的累計
TextBox71為24到46的累計
TextBox72為47到69的累計
不知要如何修改程序......謝謝您
作者:
changxxx
時間:
2015-2-19 21:20
目前只會寫成這樣
spTB = Val(Replace(Class_TextBox.Name, "TextBox", ""))
With Class_TextBox
If KeyCode = 13 Then
If spTB < 24 Then
.Parent.TextBox70.Text = Val(.Parent.TextBox70.Text) + Val(.Text)
ElseIf spTB > 23 And spTB < 47 Then
.Parent.TextBox71.Text = Val(.Parent.TextBox71.Text) + Val(.Text)
Else
.Parent.TextBox72.Text = Val(.Parent.TextBox72.Text) + Val(.Text)
End If
End If
End With
複製代碼
作者:
linyancheng
時間:
2015-2-20 17:53
本帖最後由 linyancheng 於 2015-2-20 18:01 編輯
這樣寫應該可以。
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)