0

我已经研究了几天,我似乎无法弄清楚如何填写计算值。我已经把它归结为这段代码,但是当它通过时,我得到一个类型不匹配 13 调试错误。我只想将一种产品的数量除以出勤率来计算渗透率。数量和出勤在单独的表单中输入,称为 SouvenirProgramForm,文本框称为数量和出勤。我要计算它的表格是“CurrentPen”文本框中的“目标”表格。我已经尝试了我能想到和找到的任何可能的东西,但没有任何效果。这段代码是我得到的最接近的代码,我把它放在一个按钮中,上面写着“计算”,就在我希望渗透率出现的位置旁边。错误在 z = x / y 的某个地方。

Dim x As Variant
Dim y As Variant
Dim z As Variant
x = SouvenirProgramForm.Quantity.Value
y = SouvenirProgramForm.Attendance.Value
z = x / y
CurrentPen.Value = z

帮助将不胜感激。

4

2 回答 2

0

在整理了这里的所有内容并试图理解它之后,我终于让它工作了。感谢您的帮助 B 哈特。这是使它对我有用的最终公式。

Dim a As String
Dim b As String
Dim c As Double
Dim d As Double
Dim e As Double
a = (Replace(SouvenirProgramFormG.Quantity, ",", ""))
b = (Replace(SouvenirProgramFormG.Attendance, ",", ""))
c = CDbl(a)
d = CDbl(b)
e = c / d * 100
TextBox1 = e

我将此代码隐藏在 SouvenirProgramFormG 页面上的继续按钮中,然后将另一页面上的文本框设置为等于新的 TextBox1。它不漂亮,但它完成了工作。感谢您的帮助!

于 2014-01-10T14:29:07.687 回答
0

由于变量被声明为变体,因此这些值可能被读取为文本。

尝试将它们声明为 long 或强制 long 值

以下内容是否适合您

Dim x As Long
Dim y As Long
Dim z As Long
x = SouvenirProgramForm.Quantity.Value
y = SouvenirProgramForm.Attendance.Value
z = x / y
CurrentPen.Value = z

或者

Dim x As Variant
Dim y As Variant
Dim z As Variant
x = SouvenirProgramForm.Quantity.Value
y = SouvenirProgramForm.Attendance.Value
z = CLng(x) / CLng(y)
CurrentPen.Value = z

您可以通过以下方式检查变量类型(返回为字符串而不是整数或长整数)

Dim X As Variant
X = "123"
MsgBox TypeName(X)
于 2014-01-09T18:51:19.007 回答