我已经研究了好几天了,我似乎无法弄清楚如何填写计算值。我已经了解了这段代码,但是当它通过时,我得到一个类型不匹配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
非常感谢帮助。
答案 0 :(得分:0)
由于变量被声明为变体,因此可能将值读取为文本。
尝试将它们声明为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)
答案 1 :(得分:0)
在对这里的所有内容进行分类并尝试理解它之后,我终于开始工作了。感谢您的帮助B Hart。这是使它适合我的最终公式。
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。它不漂亮,但它完成了工作。谢谢你的帮助!