中易网

vba中的函数定义

答案:4  悬赏:60  
解决时间 2021-01-17 19:31
  • 提问者网友:兔牙战士
  • 2021-01-17 15:06
vba中的函数定义
最佳答案
  • 二级知识专家网友:酒醒三更
  • 2021-01-17 15:33
你这哪里是写程序。
你的程序没有写完,在VB中Max,Min,Acos等等都需要自己写代码。
完整程序如下:(注意:你的算法我没有改,但我认为有问题,你自己对付吧)
Sub 已知三边求三角()
a = InputBox("a边")
b = InputBox("b边")
c = InputBox("c边")
If Max(CDbl(a), CDbl(b), CDbl(c)) - Min(CDbl(a), CDbl(b), CDbl(c)) < a + b + c - Max(CDbl(a), CDbl(b), CDbl(c)) - Min(CDbl(a), CDbl(b), CDbl(c)) Then
x = ACos((b ^ 2 + c ^ 2 - a ^ 2) / (2 * b * c))
y = ACos((a ^ 2 + c ^ 2 - b ^ 2) / (2 * a * c))
z = ACos((b ^ 2 + a ^ 2 - c ^ 2) / (2 * b * a))

MsgBox "A=" & x
MsgBox "B=" & y
MsgBox "C=" & z
Else
MsgBox "此三边不可围成三角形"
End If
End Sub

Function Max(a As Double, b As Double, c As Double) As Double
Dim Ai(3) As Double
Ai(1) = a: Ai(1) = b: Ai(1) = c

For I = 1 To 3
If Ai(I) > Max Then
Max = Ai(I)
End If
Next

End Function

Function Min(a As Double, b As Double, c As Double) As Double
Dim Ai(3) As Double
Ai(1) = a: Ai(1) = b: Ai(1) = c

For I = 1 To 3
If Ai(I) < Min Then
Min = Ai(I)
End If

Next

End Function
Function ACos(x As Double) As Double
If x >= -1 And x < -0.5 Then ACos = Atn(Sqr(1 - x * x) / x) + 4 * Atn(1)
If x >= -0.5 And x <= 0.5 Then ACos = -Atn(x / Sqr(1 - x * x)) + 2 * Atn(1)
If x > 0.5 And x <= 1 Then ACos = Atn(Sqr(1 - x * x) / x)
End Function
全部回答
  • 1楼网友:玩世
  • 2021-01-17 18:02
Private Sub CommandButton7_Click()
Dim a, b, c As Long
Range("a15") = InputBox("a边")
Range("a16") = InputBox("b边")
Range("a17") = InputBox("c边")
a = Range("a15").Value
b = Range("a16").Value
c = Range("a17").Value
If (a + b > c) And (b + c > a) And (a + c > b) Then
x = Application.WorksheetFunction.Acos((b ^ 2 + c ^ 2 - a ^ 2) / (2 * b * c))
y = Application.WorksheetFunction.Acos((a ^ 2 + c ^ 2 - b ^ 2) / (2 * a * c))
Z = Application.WorksheetFunction.Acos((b ^ 2 + a ^ 2 - c ^ 2) / (2 * b * a))
MsgBox "A角=" & Round(x, 4)
MsgBox "B角=" & Round(y, 4)
MsgBox "C角=" & Round(Z, 4)
Else
MsgBox "此三边不可围成三角形"
End If
End Sub
  • 2楼网友:行路难
  • 2021-01-17 17:01
max,min,acos等不是vba函数,不过是excel函数。所以max改为如下形式
Application.WorksheetFunction.max
其余同。
即可
  • 3楼网友:夜风逐马
  • 2021-01-17 15:44
在VB中Max,Min,Acos等等都需要自己写代码。
一个函数就是预定的一个计算公式,可以快速地完成一个特定的计算。如:sum,index etc。
二、自定义函数
自定义函数是用户自己编写的函数;一个自定义函数就是一个function过程;编写了一个function过程就相当于编写了一个自定义函数。
三、为什么要创建自定义函数
1.简化工作,解决需要较多辅助列或使用较长公式才能完成的计算问题,比如后面的提取工作簿名称的应用。
2.解决不能用现有的工作簿函数完成的计算问题,如统计指定背景颜色的单元格个数。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息