View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Norman Jones Norman Jones is offline
external usenet poster
 
Posts: 5,302
Default Why this code works and other do not? Newbie here.

Hi Steve,

Your first version works for me with an explicit conversion of TextBox1's
string value to an integer:

Private Sub TextBox1_AfterUpdate()

If CInt(TextBox1.Value) (ActiveSheet.Range("$C$5").Value + 1) _
- Calendar1.Day Then
MsgBox "Leave cannot exceed " & _
(ActiveSheet.Range("$C$5").Value + 1) _
- Calendar1.Day & " days!", vbCritical, _
"Wrong number of leave"

TextBox1.Value = 0

End If
End Sub

Your second version makes an implicit conversion by assigning the TextBox
value to the DateValue variable which you have dimmed as integer.

---
Regards,
Norman



wrote in message
oups.com...
Hi

I am a newbie to VBA.

I have a UserForm with a Calendar and a TextBox. I wrote a procedure to
check the number entered in the TextBox do not exceed a limit. The
following function triggers the MsgBox and resets the TextBox1.Value to
0, even when the TextBox1.Value DO NOT exceed the limit set.

----
Private Sub TextBox1_AfterUpdate()

If TextBox1.Value ((ActiveSheet.Range("$C$5").Value + 1)) -
Calendar1.Day Then
MsgBox "Leave cannot exceed " & ((ActiveSheet.Range("$C$5").Value +
1)) - Calendar1.Day & " days!", vbCritical, "Wrong number of leave"

TextBox1.Value = 0

End If

End Sub
----

Finally after a couple of hours I came with this solution and it works
the way I need. However I am curious why the first code didn't work.
Can someone please guide me?


----
Private Sub TextBox1_AfterUpdate()
Dim DateLimit As Integer
DateLimit = TextBox1.Value
If DateLimit ((ActiveSheet.Range("$C$5").Value + 1)) -
Calendar1.Day Then
MsgBox "Leave cannot exceed " & ((ActiveSheet.Range("$C$5").Value +
1)) - Calendar1.Day & " days!", vbCritical, "Wrong number of leave"

TextBox1.Value = 0

End If

End Sub

-----

TIA