2014-04-03 41 views
1


我有userform與文本框。文本框限制某些字符的輸入,或者允許輸入數字逗號和點。代碼在文本框的key_press事件內。只要下面的代碼位於key_press事件中,一切正常。當我用不同的子代碼輸入call private sub時,它不起作用。用戶表單事件和調用私人分

爲什麼它不起作用?

代碼Key_press事件中:

Private Sub netto_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 

Select Case KeyAscii 

    Case Asc("0") To Asc("9") 
    Case Asc("-") 
    Case Else 
    KeyAscii = 0 

End Select 

End Sub 

代碼調用子Key_press事件中:

Private Sub netto_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 

Call klawisze 

End Sub 

Private Sub klawisze() 

Select Case KeyAscii 

    Case Asc("0") To Asc("9") 
    Case Asc("-") 
    Case Else 
    KeyAscii = 0 

End Select 

End Sub 
+0

有你設置斷點和調試它,看看它在做什麼? –

+0

實際上,我使用「step into」逐行執行它,並沒有發生任何事情。事件稱爲私人小組,私人小組執行,因爲它應該和沒有......仍然工作錯了。 – lowak

回答

1

你在哪裏接近正確的解決方案。您只需通過論證KeyAsciiklawisze子(其接受相應parametr:ByVal KeyAscii As MSForms.ReturnInteger):

Private Sub netto_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 
    Call klawisze(KeyAscii) 
End Sub 

Private Sub klawisze(ByVal KeyAscii As MSForms.ReturnInteger) 
    Select Case KeyAscii 
     Case Asc("0") To Asc("9") 
     Case Asc("-") 
     Case Else 
      KeyAscii = 0 
    End Select 
End Sub 
+1

你說得對,我錯過了。謝謝! – lowak

+0

順便說一句......是否有可能插入'if'值傳遞給指定事件'then'? – lowak

+0

不知道我明白你是什麼意思..你能澄清嗎? –