高人们,请帮忙看一下......(解决就结帐,200分)
MSForms.ReturnInteger
这个类型的变量,如何附值....
[解决办法]
Private Sub CustomerId_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < Asc( "0 ") Or KeyAscii > Asc( "9 ") Then
KeyAscii = 0
End If
End Sub
[解决办法]
没找到方法,支持楼主。
http://www.excelforum.com/showthread.php?t=500400
这里跟同样的问题
[解决办法]
不能变通吗?你要干什么?
[解决办法]
KeyPress是截获键盘按键消息,你应该发送一个消息来触发这个事件
[解决办法]
例如
postmessage hwnd,WM_KEYDOWN,65,0
[解决办法]
MSForms.ReturnInteger
没看懂
[解决办法]
给你个变通的方法
Private key As Integer
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii Is Nothing Then
TextBox1.SetFocus
SendKeys Chr(key)
Else
If KeyAscii > 57 Or KeyAscii < 48 Then KeyAscii = 0
End If
End Sub
Private Sub UserForm_Click()
Dim a As MSForms.ReturnInteger
key = 48 + Rnd * 10
Call TextBox1_KeyPress(a)
End Sub
[解决办法]
Option Explicit
Dim r As ReturnInteger
Private Sub UserForm_Click()
r.Value = 333 '真正的赋值
MsgBox r.Value
End Sub
Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Set r = KeyAscii
End Sub
[解决办法]
实际上,我们之所以不能对ReturnInteger赋值,是因为无法对ReturnInteger类实例化!(DIM R AS NEW ReturnInteger 也不行)
而UserForm_KeyPress则可以对其实例化!实例化以后,就可以对ReturnInteger进行操作了!
实际应用中,不可能先按个键再进行其它操作,变通方法是用 sendkeys 向自己窗口发送一个按键,然后就可以使用ReturnInteger了
[解决办法]
楼上说的太正确了