2016-03-29 6 views
0

Я получаю сообщение об ошибке, связанной с переполнением на следующей строке кода:перелива Ошибка - Excel VBA

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

Я сделал немного поиска и большинство ответов, кажется, относятся к типу переменной. Но я проверил переменные и, если я не полностью слеп (счастлив признать), я не вижу никаких несоответствий, которые могут помешать работе функции.

convertStringToNumber является функцией:

Function convertStringToNumber(convertNumber As String) As Long 

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

End Function 

И я следующие переменные определены:

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 

Приветствия

+1

Ваше «если» утверждение неверно. Попробуйте, если Len (convertNumber)> 0 и isNumber (convertNumber), затем ... Также удалите ':' после инструкции else. –

+0

Что делать, если вы объявили 'coukTotalBingBrandSessions'' Double'? (В дополнение к тому, что указывал @KrisB) – BruceWayne

+0

@BruceWayne определяется как Long – megatron77

ответ

0

Я завернуты расчеты в

On Error Resume Next 
On Error GoTo 0 

И код будет работать, но я не думаю, что это лучший способ справиться с этим, учитывая, что он не был предложен.

@Comintern. Дальнейшая работа показала, что мне нужно в любом случае разбить вычисления на отдельные части, чтобы затем было легко реализовать ваше предположение о проверке значения делителя.

Я доложу, если я застрял;)

Приветствия ребята

Смежные вопросы