user14358656
user14358656

Reputation:

How can I make a code that tells VB6 that tells VB6 that you're inputting something other than Whole numbers?

Introduction: Hi, everyone! I'm new to VB6! How can I make a code that tells VB6 that tells VB6 that you're inputting something other than Whole numbers?

Details: I'm making an arithmetic progression calculator (I think the code is not needed? but I'll just provide just in case.) Here is my code:

Option Explicit
Private Sub btCalc_Click()
    Dim A As Long
    Dim N As Long
    Dim D As Long
    Dim R As Long
    Dim F As Long
    
    A = Val(txtInitterm.Text)
    N = Val(txtTermint.Text)
    D = Val(txtFinterm.Text)
    R = Val(txtTermint.Text)
    
    F = N / 2 * (2 * A + (N - 1) * D)
    
    lblOutput.Caption = F
    
End Sub

and I wanna notify or tell VB6 that I'm putting in a fraction, not an integer and uses that fraction to do operations.

NOTE: String Fraction to Value in VBA this doesn't answer my question... :D

Thank you for helping me, everyone! it's much appreciated.

Upvotes: 0

Views: 63

Answers (1)

User51
User51

Reputation: 1109

There is no Application.Evaluate(...) in Vb6 like in VBA, so you have to do it like the "question" in "String Fraction to Value in VBA". Extract the logic to a function for re-use, and replace the Val(...) calls with the function for use.

Something like below would likely work, although you may want to provide better error handling in the obvious bad-math cases. I simply return zero and mark them with a comment.

Option Explicit
Private Sub btCalc_Click()
    Dim A As Long, N As Long, D As Long, R As Long, F As Long
    
    A = GetFrac(txtInitterm)
    N = GetFrac(txtTermint)
    D = GetFrac(txtFinterm)
    R = GetFrac(txtTermint)
    
    F = N / 2 * (2 * A + (N - 1) * D)
    
    lblOutput.Caption = F
    
End Sub


Public Function GetFrac(ByVal S As String) As Double
  GetFrac = 0         ' default return on error
  If InStr(S, "/") = 0 Then GetFrac = Val(S): Exit Function
  Dim P() As String, N As Double, D As Double
  P = Split(S, "/")
  If UBound(P) <> 1 Then Exit Function  ' bad input -- multiple /'s
  N = Val(P(0))
  D = Val(P(1))
  If D = 0 Then Exit Function ' div by 0
  GetFrac = N / D
End Function

Upvotes: 1

Related Questions