2016-12-01 3 views
0

Следующий код несколько раз работает и для более чем двух значений он говорит об ошибке, связанной с переполнением. Я просто хочу написать код VBA для значений в столбце, чтобы отделить три категории и подсчитать числа в каждой категории. пожалуйста, сообщите мне об ошибке этого кода.VBA Excel Do while and If condition

Sub income_status() 

Dim income As Integer 
Dim locount As Integer 
Dim mecount As Integer 
Dim hicount As Integer 



Do While ActiveCell.Value <> "" 

    income = ActiveCell.Value 


    If income <= 10000 Then 
    ActiveCell.Offset(0, 1).Value = "Low Income" 
    locount = locount + 1 

    ElseIf income > 10000 And income <= 50000 Then 

    ActiveCell.Offset(0, 1).Value = "Medium Income" 
    mecount = mecount + 1 

    Else 

    ActiveCell.Offset(0, 1).Value = "High Income" 
    hicount = hicount + 1 


    End If 
    ActiveCell.Offset(1).Select 

    Loop 
    ActiveCell.Offset(1, 2).Value = locount 
    ActiveCell.Offset(1, 2).Value = mecount 
    ActiveCell.Offset(1, 2).Value = hicount 


End Sub 
+1

Можете вы рассказать точную ошибку? –

+0

Вам нужно объявить свои переменные как longs .... 'Dim income As Long' – OpiesDad

+1

Вам нужно посмотреть [Excel VBA Введение Часть 5 - Выбор ячеек (диапазон, ячейки, Activecell, End, Offset)] (https: // www.youtube.com/watch?v=c8reU-H1PKQ&index=5&t=3043s&list=PLNIs-AWhQzckr8Dgmgb3akx_gFMnpxTN5) –

ответ

2

Максимальное значение целого числа равно 32767. Наверняка есть доход выше этого, тем более, что вы проверяете значения выше 50k. Объявите все ваши переменные как длинные:

Dim income As Long 
Dim locount As Long 
Dim mecount As Long 
Dim hicount As Long 

, а остальное должно быть одинаковым.

+1

«Остальное должно быть одно и то же» - да. Ну, за исключением отпечатка дерьма и полагаясь на 'ActiveCell' и' .Select' ;-) –

+0

@ Mat'sMug Hahaha. Очень верно. Надеемся, что ОП рассмотрит ссылку, содержащуюся в комментариях к вопросу. :) – OpiesDad