2016-03-29 7 views
0

Ich erhalte einen Überlauffehler auf der folgenden Codezeile:Überlauffehler - Excel VBA

coukTotalBingBrandSessions = (convertStringToNumber(coukBingBrandSessions) + ((convertStringToNumber(coukBingBrandSessions)/(convertStringToNumber(coukBingBrandSessions) + convertStringToNumber(coukBingNonBrandSessions))) * convertStringToNumber(coukBingTNPSessions))) 

Ich habe ein bisschen suchen getan und die meisten Antworten scheinen Variablentyp zu beziehen. Aber ich habe die Variablen durchgecheckt, und wenn ich nicht völlig blind bin (ich gebe es gerne zu), kann ich keine Inkonsistenzen sehen, die die Funktion beeinträchtigen könnten.

convertStringToNumber ist eine Funktion:

Function convertStringToNumber(convertNumber As String) As Long 

If convertNumber > "" Then 
convertStringToNumber = 0 
Else: convertStringToNumber = CLng(convertNumber) 
End If 

End Function 

Und ich habe die folgenden Variablen definiert:

Dim coukBingBrandSessions As String 
Dim coukBingNonBrandSessions As String 
Dim coukBingTNPSessions As String 
Dim coukGoogleBrandSessions As String 
Dim coukGoogleNonBrandSessions As String 
Dim coukGoogleTNPSessions As String 
Dim coukPpcBrandSessions As String 
Dim coukPpcNonBrandSessions As String 
Dim coukBingBrandOrders As String 
Dim coukBingNonBrandOrders As String 
Dim coukBingTNPOrders As String 
Dim coukGoogleBrandOrders As String 
Dim coukGoogleNonBrandOrders As String 
Dim coukGoogleTNPOrders As String 
Dim coukPpcBrandOrders As String 
Dim coukPpcNonBrandOrders As String 
Dim coukOtherBrandSessions As String 
Dim coukOtherNonBrandSessions As String 
Dim coukOtherTNPSessions As String 
Dim coukYahooBrandSessions As String 
Dim coukYahooNonBrandSessions As String 
Dim coukYahooTNPSessions As String 
Dim coukOtherBrandOrders As String 
Dim coukOtherNonBrandOrders As String 
Dim coukOtherTNPOrders As String 
Dim coukYahooBrandOrders As String 
Dim coukYahooNonBrandOrders As String 
Dim coukYahooTNPOrders As String 

Dim coukSEOBrandSessions As Long 
Dim coukSEONonBrandSessions As Long 

Dim coukSEOBrandOrders As Long 
Dim coukSEONonBrandOrders As Long 

Dim coukTotalBingBrandSessions As Long 
Dim coukTotalGoogleBrandSessions As Long 
Dim coukTotalOtherBrandSessions As Long 
Dim coukTotalYahooBrandSessions As Long 

Dim coukTotalBingBrandOrders As Long 
Dim coukTotalGoogleBrandOrders As Long 
Dim coukTotalOtherBrandOrders As Long 
Dim coukTotalYahooBrandOrders As Long 

Dim coukTotalBingNonBrandSessions As Long 
Dim coukTotalGoogleNonBrandSessions As Long 
Dim coukTotalOtherNonBrandSessions As Long 
Dim coukTotalYahooNonBrandSessions As Long 

Dim coukTotalBingNonBrandOrders As Long 
Dim coukTotalGoogleNonBrandOrders As Long 
Dim coukTotalOtherNonBrandOrders As Long 
Dim coukTotalYahooNonBrandOrders As Long 

Prost

+1

Ihre 'if' Aussage falsch ist. Probieren Sie Len (convertNumber)> 0 und isNumber (convertNumber) dann ... Entfernen Sie auch das ':' nach Ihrer else-Anweisung. –

+0

Was ist, wenn Sie "coukTotalBingBrandSessions" als "Double" deklariert haben? (Zusätzlich zu dem, was @ KrisB wies darauf hin) – BruceWayne

+0

@BruceWayne es ist definiert als lang – megatron77

Antwort

0

Ich wickelte die Berechnungen in einem

On Error Resume Next 
On Error GoTo 0 

Und der Code würde laufen, aber ich denke nicht, dass es der beste Weg ist, damit umzugehen, da er nicht vorgeschlagen wurde.

@Comintern Einige weitere Arbeiten haben ergeben, dass ich die Berechnungen sowieso in ihre Einzelteile zerlegen muss, damit Sie dann Ihren Vorschlag, den Wert des Divisors zuerst zu überprüfen, einfach implementieren können.

Ich werde berichten, wenn ich stecken;)

Prost Jungs