2017-08-14 103 views
0

我只想问IFERROR函数:我如何能实现“创先争优”的功能,如:如何实现VBA的MS Word

iferror 
iserror 

在VBA“WORD”。我知道如何在Excel中做到这一点,但不是用词。

例如(excel)

application.worksheetfunction.iferror(...) 

但我在做MSWord中的代码。上述功能似乎不起作用。

Q1。可能吗? Q2302。如果是的话,你可以启发我的代码模式?

我试着搜索谷歌的答案,但似乎都指向了Excel方法。谢谢你这么多..

编辑:

要阐述我的问题,我在Word中一个窗体应收集可变

qty1, qty2 ... qty18, then uc1, uc2 ... uc18

这样的数值和存储,如果我处理变量

If Me.qty1.Value * Me.uc1.Value <> 0 Then 
    tot1 = Me.qty1.Value * Me.uc1.Value 
Else 
    tot1 = "" 
End If 

它给我的错误:

type mismatch

因为当我离开qty2到qty18为空时,它被理解为空字符串(?),就像在Excel中一样。

有没有其他方法可以做到这一点?

+0

只需使用普通的VBA - '如果ISERROR(东西)Then'但它看起来(在您编辑后)像你第一次应该将它们送入任何前检查您输入变量的值数计算。 –

+0

excel应用程序函数实际上是从VBA运行一个工作表单元格公式....您的_type不匹配错误可能是因为'tot1'被定义为一个数字变量,并且您正在为它分配一个字符串值...或者'tot1'被定义为一个字符串变量,并且您正尝试为其分配一个数字值.....当您对错误有任何疑问时,请**说明哪一行导致错误**(有时无法猜测) – jsotola

+0

嗨@TimWilliams,我在开始计算之前检查了我的输入,但它仍然给我同样的错误。我尝试了偶然的错误,但似乎我在这里错过了一些东西。 –

回答

0

试试这个

Dim aaa As Double 
Dim bbb As Double 
Dim tot1 As Double 

aaa = Me.qty1.Value 
bbb = Me.uc1.Value 

tot1 = 0 

If IsNumeric(aaa) And IsNumeric(bbb) Then 

    tot1 = Val(aaa) * Val(bbb) 

end if 
+2

在尝试将它们存储在类型为'Double'的变量之前,您应该测试值是数字**。 (你的意思可能是'Dim aaa As String:Dim bbb As String') – YowE3K

+0

@jsotola,对不起,我最后读了你的评论。根据我们上面的讨论,我也试图修补我的问题。我想出了这个:'dim tot1 as string:If Me.qty1.Value =“”Or Me.uc1.Value =“”Then tot1 =“”else tot1 = Me.qty1.Value * Me.uc1.Value' ..我仍然在正轨? –