用途:在另一个平台和用户上输入两个分数,并使用IsNothing
对其进行评估。如果它们不是可以转换的整数或字符串,请运行Frac2Num
(附加,我知道这是有效的,而不是焦点。由Arecon Data的Jeff Arms创建的代码)。将分数转换为整数并将它们划分为仅用于if语句的返回零
然后检查值A2是否大于1。如果是,则执行数学函数(A2/2) - (A1/2),然后返回该值。否则,返回0
到目前为止,我只能够返回0,这样的东西它是如何读取值或者其如何返回式后搞乱它的价值,我想。
主要功能:
Public Function MyFunction(ByVal A1 As String, ByVal A2 As String) As Integer
MyFunction= 0
Try
Dim B1 As Double
Dim B2 As Double
If IsNothing(A1) Then Return 0 'If the user provides no values, return 0.
If IsNothing(A2) Then Return 0 'If the user provides no values, return 0.
If IsNumeric(A1) = True Then
B1 = CDbl(A1)
Else
B1 = Frac2Num(A1)
End If 'If the value is an integer or convertible string, convert value to double. If not, run through Frac2Num function.
If IsNumeric(A2) = True Then
B2 = CDbl(A2)
Else
B2 = Frac2Num(A2)
End If
If A2 > 1 Then
MyFunction= (A2/2) - (A1/2)
Return MyFunction
Else MyFunction= 0
End If 'If A2 is greater than one, then MyFunction = value created by equation.
Catch ex As Exception
End Try
Frac2Num功能:
Function Frac2Num(ByVal X As String) As Double
Dim P As Integer, N As Double, Num As Double, Den As Double
X = Trim$(X)
P = InStr(X, "/")
If P = 0 Then
N = Val(X)
Else
Den = Val(Mid$(X, P + 1))
If Den = 0 Then Error 11 ' Divide by zero
X = Trim$(Left$(X, P - 1))
P = InStr(X, " ")
If P = 0 Then
Num = Val(X)
Else
Num = Val(Mid$(X, P + 1))
N = Val(Left$(X, P - 1))
End If
End If
If Den <> 0 Then
N = N + Num/Den
End If
Frac2Num = N
End Function
返回:
Sub Main()
Dim result As Integer
result = MyFunction("8 1/2", "8 5/8") 'Function called with example values.
Console.WriteLine(result)
Console.ReadLine()
End Sub
你试图通过步进,看看那里的逻辑需要你?想到的第一个问题是:IsNumeric是否对复合(复合)分数返回true? CDBL是否在这些相同的价值观上工作?而且,这段代码看起来比.NET更多的VBA-ish。 – Jeremy