vba 错误 13 类型不匹配,VBA
vba error 13 type missmatch, VBA
刚开始使用 VBA,对此知之甚少。将其用于工程项目以解决深层边坡稳定性问题。当输入前 7 个计算时 VBA 在用户表单中正确解决这些问题。但是当我尝试计算第 8 个公式 (AVHS8) 时,它给我一个错误, 是 运行 时间错误“13”类型不匹配。我不确定问题出在哪里,这些公式在 excel 中工作得很好。如果有人可以提供帮助,将不胜感激。问题如下。
BES = 2.5 RAD = 18.58 DTCP = 7.5 和 OH =17,这些只是设置的数字,不会更改
Private Sub Calculate_Click()
RAD = Sqr(DTCP ^ 2 + OH ^ 2)
BES = DTCP / 3
AVHS1 = (0)
AVHS2 = (Sqr(RAD ^ 2 - (DTCP - BES) ^ 2) - OH)
AVHS3 = (Sqr(RAD ^ 2 - (DTCP - BES - BES) ^ 2) - (OH) + (Tan(30 * 3.14 / 180) * BES))
AVHS4 = (Sqr(RAD ^ 2 - (DTCP - BES - BES - BES) ^ 2) - (OH) + (Tan(30 * 3.14 / 180) * BES * 2))
AVHS5 = (Sqr(RAD ^ 2 - (DTCP - BES - BES) ^ 2) - (OH) + (Tan(30 * 3.14 / 180) * BES * 3))
AVHS6 = (Sqr(RAD ^ 2 - (DTCP - BES) ^ 2) - (OH) + (Tan(30 * 3.14 / 180) * BES * 4))
AVHS7 = (Sqr(RAD ^ 2 - (DTCP) ^ 2) - (OH) + (Tan(30 * 3.14 / 180) * BES * 5))
'VBA can solve all the above code. it cant solve the code below (AVHS8)
AVHS8 = (Sqr(RAD ^ 2 - (DTCP + BES) ^ 2) - (OH) + (Tan(30 * 3.14 / 180) * BES * 6))
我假设这些是您表单上的控件而不是变量,这可以解释问题。作为控件,内容是文本,当您使用 (DTCP + BES)
时,它实际上返回 7.52.5
而不是 10,因为 +
也可以用作串联运算符。将最后一行更改为:
AVHS8 = (Sqr(RAD ^ 2 - (CDbl(DTCP) + CDbl(BES)) ^ 2) - (OH) + (Tan(30 * 3.14 / 180) * BES * 6))
Sub Leverage()
Dim i As Long
Dim counter_less As Long
Dim count_pos As Long
Dim row_count As Long
Dim num As Variant
num = InputBox("Enter threshold")
row_count = Cells(1, 1).CurrentRegion.Rows.Count - 2
counter_pos = 0
counter_less = 0
For i = 1 To row_count
If Abs(Cells(i + 2, 3)) > num And Cells(i + 3, 3) <> "" Then
counter_less = counter_less + 1
If Cells(i + 3, 3) < 0 And i Then
counter_pos = counter_pos + 1
End If
End If
Next
counter_pos = counter_pos / (counter_less)
counter_less = counter_less / row_count
MsgBox counter_pos & " %"`enter code here`
End Sub
I get error 6: Overflow. Anyone has any suggestions?
刚开始使用 VBA,对此知之甚少。将其用于工程项目以解决深层边坡稳定性问题。当输入前 7 个计算时 VBA 在用户表单中正确解决这些问题。但是当我尝试计算第 8 个公式 (AVHS8) 时,它给我一个错误, 是 运行 时间错误“13”类型不匹配。我不确定问题出在哪里,这些公式在 excel 中工作得很好。如果有人可以提供帮助,将不胜感激。问题如下。
BES = 2.5 RAD = 18.58 DTCP = 7.5 和 OH =17,这些只是设置的数字,不会更改
Private Sub Calculate_Click()
RAD = Sqr(DTCP ^ 2 + OH ^ 2)
BES = DTCP / 3
AVHS1 = (0)
AVHS2 = (Sqr(RAD ^ 2 - (DTCP - BES) ^ 2) - OH)
AVHS3 = (Sqr(RAD ^ 2 - (DTCP - BES - BES) ^ 2) - (OH) + (Tan(30 * 3.14 / 180) * BES))
AVHS4 = (Sqr(RAD ^ 2 - (DTCP - BES - BES - BES) ^ 2) - (OH) + (Tan(30 * 3.14 / 180) * BES * 2))
AVHS5 = (Sqr(RAD ^ 2 - (DTCP - BES - BES) ^ 2) - (OH) + (Tan(30 * 3.14 / 180) * BES * 3))
AVHS6 = (Sqr(RAD ^ 2 - (DTCP - BES) ^ 2) - (OH) + (Tan(30 * 3.14 / 180) * BES * 4))
AVHS7 = (Sqr(RAD ^ 2 - (DTCP) ^ 2) - (OH) + (Tan(30 * 3.14 / 180) * BES * 5))
'VBA can solve all the above code. it cant solve the code below (AVHS8)
AVHS8 = (Sqr(RAD ^ 2 - (DTCP + BES) ^ 2) - (OH) + (Tan(30 * 3.14 / 180) * BES * 6))
我假设这些是您表单上的控件而不是变量,这可以解释问题。作为控件,内容是文本,当您使用 (DTCP + BES)
时,它实际上返回 7.52.5
而不是 10,因为 +
也可以用作串联运算符。将最后一行更改为:
AVHS8 = (Sqr(RAD ^ 2 - (CDbl(DTCP) + CDbl(BES)) ^ 2) - (OH) + (Tan(30 * 3.14 / 180) * BES * 6))
Sub Leverage()
Dim i As Long
Dim counter_less As Long
Dim count_pos As Long
Dim row_count As Long
Dim num As Variant
num = InputBox("Enter threshold")
row_count = Cells(1, 1).CurrentRegion.Rows.Count - 2
counter_pos = 0
counter_less = 0
For i = 1 To row_count
If Abs(Cells(i + 2, 3)) > num And Cells(i + 3, 3) <> "" Then
counter_less = counter_less + 1
If Cells(i + 3, 3) < 0 And i Then
counter_pos = counter_pos + 1
End If
End If
Next
counter_pos = counter_pos / (counter_less)
counter_less = counter_less / row_count
MsgBox counter_pos & " %"`enter code here`
End Sub
I get error 6: Overflow. Anyone has any suggestions?