English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

我今天要做計算平均
拉5個text\'第一個用來輸入姓名:其他的都用來輸入分數
一個cmd\'命令鈕
5個Label\'姓名,國文,英文,數學,計概
除了名字的text另外4個text要怎麼不準他輸入文字(字串),只輸入數字
但是我今天輸入中文他也計算~要如何修改到沒漏洞?

2006-01-20 13:52:20 · 3 個解答 · 發問者 小古 1 in 電腦與網際網路 程式設計

可以解釋一下嗎?這樣改是否只能用鍵盤右邊的按鍵...左邊的123....9..0不能打

2006-01-21 03:15:13 · update #1

3 個解答

如果你不會使用物件陣列的話,參考以下做法
Private Sub Command1_Click()
TmpStr = Split("姓名,國文,英文,數學,計概", ",")
Label1 = TmpStr(0)
For i = 2 To 5
If Val(Controls("Text" & i)) > 100 Or Val(Controls("text" & i)) < 0 Or (Not IsNumeric(Controls("Text" & i))) Then MsgBox "輸入的分數不合法": Exit Sub
Sum = Sum + Val(Controls("text" & i))
Controls("Label" & i).Caption = TmpStr(i - 1)
Next
MsgBox "平均分數:" & Int((Sum / 4) * 100 + 0.5) / 100 '計算到小數第二位,第三位四捨五入
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57, 8 '0~9數字鍵、小數點、倒退鍵不過濾
Exit Sub
Case 46
If InStr(Text2, ".") <> 0 Then KeyAscii = 0 Else Exit Sub '只能輸入一個小數點
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub Text3_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57, 8 '0~9數字鍵、小數點、倒退鍵不過濾
Exit Sub
Case 46
If InStr(Text2, ".") <> 0 Then KeyAscii = 0 Else Exit Sub '只能輸入一個小數點
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub Text4_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57, 8 '0~9數字鍵、小數點、倒退鍵不過濾
Exit Sub
Case 46
If InStr(Text2, ".") <> 0 Then KeyAscii = 0 Else Exit Sub '只能輸入一個小數點
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub Text5_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57, 8 '0~9數字鍵、小數點、倒退鍵不過濾
Exit Sub
Case 46
If InStr(Text2, ".") <> 0 Then KeyAscii = 0 Else Exit Sub '只能輸入一個小數點
Case Else
KeyAscii = 0
End Select
End Sub

2006-01-21 14:07:59 補充:
糟.. Text3~Text5的程式忘了修改..=_=||
如果要用這段程式碼的話,請把Text3_KeyPress事件內的Text2改成Text3、Text4_KeyPress事件內的Text2改成Text4
Text5_KeyPress事件內的Text2改成Text5

2006-01-22 14:40:49 補充:
我也不太會解釋,看個範例你就會用了:)
http://myweb.hinet.net/home9/afuchai/VB/Controls.frm

2006-01-20 15:42:11 · answer #1 · answered by ? 6 · 0 0

Private Sub Text1_KeyPress(KeyAscii As Integer)
If InStr("0123456789" & Chr(8), Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

2006-01-21 17:05:26 補充:
若還要考慮小數點及不超過100的話可改成:S = 0.123456789If InStr(S & Chr(8), Chr(KeyAscii)) = 0 Then KeyAscii = 0If Val(CStr(Text1) & CStr(Chr(KeyAscii))) > 100 Then KeyAscii = 0If KeyAscii = 46 Then If Len(Text1) = 0 Or Val(Text1) = 100 Or InStr(Text1, Chr(46)) Then KeyAscii = 0End If

2006-01-21 11:40:00 · answer #2 · answered by W.J.S. 7 · 0 0

以下僅能輸入數字,無法輸入其他任何字元:
Private Sub Text1_KeyPress(KeyAscii As Integer)
 If KeyAscii <> 8 And KeyAscii <> 13 Then
  If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
   KeyAscii = 0
  End If
 End If
End Sub

2006-01-21 21:34:08 補充:
to:愁痕飄絮
Val(Controls("Text" & i))
這個我沒有看過,可否稍做解釋一下它是在做什麼的?

2006-01-22 20:32:48 補充:
感謝您提供程式碼給我做為研究。
裡面好多物件喔!而且都沒有做簡單的整理,不過這樣我大概了解它到底是在做什麼用了。
在 Command3_Click() 的部份,宜將 tmp 那一行的最後面加上 & vbCrLf 或許會比較好喔!

2006-01-20 14:34:04 · answer #3 · answered by 世賢 7 · 0 0

fedest.com, questions and answers