2017-08-14 5 views
0

Ich möchte nur bitten, implementieren: Wie kann ich "EXCEL" Funktionen implementieren, wie:Wie IFERROR Funktion in VBA MS Word

iferror 
iserror 

in VBA "WORD". Ich weiß, wie man es im Excel aber nicht im Wort macht.

z.B. (Excel)

application.worksheetfunction.iferror(...) 

aber ich mache den Code in MSWord. Die obige Funktion scheint nicht zu funktionieren.

Q1. Ist es möglich?

Q2. Wenn ja, können Sie mich über das Code-Muster aufklären?

Ich habe versucht, nach Google-Antworten zu suchen, aber alle scheinen auf Excel-Methode zeigen. Vielen Dank ..

Edit:

mein Problem zu erarbeiten, ich habe eine Userform in Word, das Zahlenwert und speichern in variable

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

so sammeln sollte, wenn ich die Variablen verarbeiten

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

es gibt mir eine Fehlermeldung:

type mismatch

weil, wenn ich qty2 bis qty18 leer lasse, wird es als null string (?) Genau wie in Excel verstanden.

Gibt es einen anderen Weg, dies zu tun?

+0

Gerade einfache VBA - 'Wenn IsError (etwas) Then' Aber es sieht (nach Ihrer bearbeiten), wie Sie zuerst die Werte Ihrer Eingaben sind Zahlen überprüfen sollten sie in jeder vor der Fütterung Berechnungen. –

+0

Die Excel-Anwendungsfunktion führt tatsächlich eine Tabellenzellenformel von VBA aus. Ihr _type mismatch_ error liegt wahrscheinlich daran, dass "tot1" als numerische Variable definiert ist und Sie ihm einen Zeichenfolgenwert zuweisen ... oder "tot1" ist als Zeichenkettenvariable definiert und Sie versuchen, ihm einen numerischen Wert zuzuweisen ..... wenn Sie Fragen zu Fehlern haben, bitte ** sagen Sie, welche Zeile den Fehler verursacht hat ** (es gibt keine Möglichkeit, irgendwann zu raten) – jsotola

+0

Hi @TimWilliams, ich habe meine Eingaben überprüft, bevor ich mit meinen Berechnungen beginne, aber es gibt immer noch denselben Fehler. Ich habe versucht, den zufälligen Fehler, aber es scheint, dass ich etwas hier vermisse. –

Antwort

0

versuchen diese

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

Sie sollten testen, dass die Werte numerisch sind ** bevor ** versuchen, sie in Variablen vom Typ "Double" zu speichern. (Wahrscheinlich meintest du Dim aaa As String: Dim bbb As String) – YowE3K

+0

@jsotola, sorry, ich habe deinen Kommentar zuletzt gelesen. Ich habe versucht, auch auf mein Problem basierend auf unserer Diskussion oben zu basteln. Ich habe folgendes gefunden: 'dim tot1 als String: Wenn Me.qty1.Value =" "Oder Me.uc1.Value =" "Dann tot1 =" "sonst tot1 = Me.qty1.Value * Me.uc1.Value" .. Ich bin immer noch auf dem richtigen Weg? –