Last updated on May 2, 2022
This article will explain the VBA Runtime error 6.
Run-time error 6 in VBA is the Overflow error. This means that a variable has been declared as one numeric data type, and then populated with a number that is outside the parameters of that data type.
Consider the following code:
Sub OverflowError()
Dim i As Integer
i = 600000
End Sub
We are declaring i as an Integer variable. An integer variable can hold the values of ‑32,768 to 32,768. We are trying to assign the value of 600,000, which is outside the allowed range and therefore the error will occur.
If we click on Debug when this error occurs, the error line will appear in yellow.
To solve this error, make sure you declare the variable with the correct numeric data types to hold the required data:
In this case use the Long Variable type.
Sub OverflowError_Corrected()
Dim i As Long
i = 600000
End Sub
We recommend always using the Long variable type instead of the Integer variable type. The only advantage of the Integer variable type is less memory is required. However, this is mostly irrelevant for coding running from VBA on modern computers.
|
Justshurik 0 / 0 / 0 Регистрация: 27.10.2013 Сообщений: 18 |
||||
|
06.01.2014, 16:36. Показов 28365. Ответов 26 Метки нет (Все метки) Помогите пожалуйста разобраться.
Заранее спасибо!
0 |
|
Programming Эксперт 39485 / 9562 / 3019 Регистрация: 12.04.2006 Сообщений: 41,671 Блог |
06.01.2014, 16:36 |
|
Ответы с готовыми решениями: Ошибка Overflow (Error 6) Ошибка runtime error 13 — type mismatch Ошибка Runtime error 1004 application-defined or object-defined error Помогите, пожалуйста, разобраться. 26 |
|
6998 / 2896 / 555 Регистрация: 19.10.2012 Сообщений: 8,804 |
|
|
06.01.2014, 16:50 |
|
|
А у меня type mismatch
0 |
|
9908 / 3924 / 742 Регистрация: 11.10.2011 Сообщений: 5,904 |
|
|
06.01.2014, 17:00 |
|
|
Justshurik, во первых — никто не знает, что вы держите в ячейках «B2», «D2» и т.д.
0 |
|
Hugo121 6998 / 2896 / 555 Регистрация: 19.10.2012 Сообщений: 8,804 |
||||
|
06.01.2014, 17:07 |
||||
|
Вот так нет ошибок:
Добавлено через 4 минуты
0 |
|
0 / 0 / 0 Регистрация: 27.10.2013 Сообщений: 18 |
|
|
06.01.2014, 17:07 [ТС] |
|
|
Сообщение от Апострофф Justshurik, во первых — никто не знает, что вы держите в ячейках «B2», «D2» и т.д. Добавлено через 35 секунд Спасибо за ответ!
0 |
|
Justshurik 0 / 0 / 0 Регистрация: 27.10.2013 Сообщений: 18 |
||||
|
06.01.2014, 17:21 [ТС] |
||||
|
Сообщение от Hugo121 Вот так нет ошибок:
Добавлено через 4 минуты Hugo121, спасибо Вам за ответ. Попробвал Ваш вариант — все равно не получается. Ошибка таже самая.
0 |
|
6998 / 2896 / 555 Регистрация: 19.10.2012 Сообщений: 8,804 |
|
|
06.01.2014, 18:12 |
|
|
Почитайте про integer!
0 |
|
0 / 0 / 0 Регистрация: 27.10.2013 Сообщений: 18 |
|
|
06.01.2014, 18:30 [ТС] |
|
|
Сообщение от Hugo121 Почитайте про integer! Спасибо Hugo121!
0 |
|
Burnoutman 8 / 8 / 6 Регистрация: 05.04.2012 Сообщений: 178 |
||||
|
12.09.2019, 18:10 |
||||
|
Почему i стремиться к бесконечности,что приводит к ошибке Overflow? Ведь цикл должен быть ограничен размером массива jeu1,где всего-то примерно 26 ячеек.
0 |
|
Hugo121 6998 / 2896 / 555 Регистрация: 19.10.2012 Сообщений: 8,804 |
||||
|
12.09.2019, 18:22 |
||||
|
Внимательнее нужно быть!
когда i достигает 16384 — сумма уже в интегер не лезет!
1 |
|
8 / 8 / 6 Регистрация: 05.04.2012 Сообщений: 178 |
|
|
12.09.2019, 18:35 |
|
|
Сообщение от Hugo121 Внимательнее нужно быть! Мда,я же сам полученное значение складываю с самим с собой.А как увеличивать,но только на 1? Аналог i++
0 |
|
Hugo121 6998 / 2896 / 555 Регистрация: 19.10.2012 Сообщений: 8,804 |
||||
|
12.09.2019, 18:57 |
||||
|
Сообщение от Burnoutman как увеличивать,но только на 1
так не пробовали?
1 |
|
8 / 8 / 6 Регистрация: 05.04.2012 Сообщений: 178 |
|
|
12.09.2019, 20:12 |
|
|
Сообщение от Hugo121 так не пробовали? Я похоже упорот сегодня. Пишу i = i + i,а вижу i=i+1 и не понимаю,почему не работает. Добавлено через 1 час 8 минут
0 |
|
6998 / 2896 / 555 Регистрация: 19.10.2012 Сообщений: 8,804 |
|
|
12.09.2019, 20:42 |
|
|
В коде Вы берёте не из диапазона, а уже из массива данных. Там нет «первой», там уже первое
0 |
|
8 / 8 / 6 Регистрация: 05.04.2012 Сообщений: 178 |
|
|
12.09.2019, 21:00 |
|
|
Сообщение от Hugo121 В коде Вы берёте не из диапазона, а уже из массива данных. Там нет «первой», там уже первое И легче мне не стало Это уже двумерный массив? Как из него тогда достать данные. foreach должен обращаться к каждому индексу и доставать одно значение,а он достаёт только значение индекса jeu1(1,1)
0 |
|
6998 / 2896 / 555 Регистрация: 19.10.2012 Сообщений: 8,804 |
|
|
12.09.2019, 21:07 |
|
|
For each должен пройти по всем — слева направо сверху вниз.
0 |
|
8 / 8 / 6 Регистрация: 05.04.2012 Сообщений: 178 |
|
|
12.09.2019, 21:23 |
|
|
Сообщение от Hugo121 Но обычно используют цикл в цикле по индексам, так контроля больше. Вот даже не представляют,что дальше делать.
0 |
|
6998 / 2896 / 555 Регистрация: 19.10.2012 Сообщений: 8,804 |
|
|
12.09.2019, 23:22 |
|
|
А я так вообще не представляю даже и зачем, а от этого сильно зависит что…
0 |
|
8 / 8 / 6 Регистрация: 05.04.2012 Сообщений: 178 |
|
|
12.09.2019, 23:45 |
|
|
Сообщение от Hugo121 А я так вообще не представляю даже и зачем, а от этого сильно зависит что… Нужно сложить два диапазона и записать всё это в другой в другом файле. Я уже с этой проблемой пару недель сижу. Главное в книгах сложат две ячейки,ну и типо всё,а как сложить диапазон да ещё и из другого файла догадывайся сам.
0 |
|
Заблокирован |
|
|
13.09.2019, 00:11 |
|
|
Burnoutman, массивы jeu1 и jeu2 двумерные и одинаковые по размерам. Каким должен быть массив ITOGO? Тоже двумерным? Или линейным? Проясните хотя бы это для начала…
0 |
|
Fuad1992 Пользователь Сообщений: 77 |
#1 05.06.2018 17:19:53 Доброго времени суток уважаемые форумчане. Run-time error «6» Overflow
Спасибо |
||
|
БМВ Модератор Сообщений: 24806 Excel 2013, 2016, 2021 |
Fuad1992, кто ж знает что у Вас там в текстбоксах за значения. Вы в отладчике то посмотрите. По вопросам из тем форума, личку не читаю. |
|
Fuad1992 Пользователь Сообщений: 77 |
Там только цифры (2.0132) Пишу другие числа, опять не работает. Так ругается именно на эту строку. Значения в них пустое когда мышкой на строку с ошибкой смотреть. Хотя во всех все заполнено. Да еще при умножении, сложении или вычитании все нормально работает) По разному пробовал писать, но не хочет делить что-то) |
|
yozhik Пользователь Сообщений: 957 |
#4 05.06.2018 18:25:07
а такой текстбокс точно есть? |
||
|
Fuad1992 Пользователь Сообщений: 77 |
Конечно есть, пробовал на другие боксы тоже. Все получается, только что делить не хочет. Такой же код сверху есть, который делит на другой бокс, он работает, нормально все делит. |
|
webley Пользователь Сообщений: 2176 |
Я думаю, что выскажу общее мнение — в данном случае без примера не обойтись |
|
Fuad1992 Пользователь Сообщений: 77 |
#7 05.06.2018 18:43:01 Такое впечатление, что в целом коде он может делить только раз. А такого рода кода в целом Sub целых 3. Первый делит, на 2-ой и 3-й ругается. Вот целый код посмотрите. Думаю так станет понятно. Первый просто суммирует, к нему притензий вообще нет)
Изменено: Fuad1992 — 05.06.2018 18:59:20 |
||
|
БМВ Модератор Сообщений: 24806 Excel 2013, 2016, 2021 |
webley, пример кода выше. Легче стало? 🙂 По вопросам из тем форума, личку не читаю. |
|
webley Пользователь Сообщений: 2176 |
#9 05.06.2018 18:56:17
нет думаю тут будет недостаточно даже скриншота формы |
||
|
Fuad1992 Пользователь Сообщений: 77 |
Вот пожалуйста) не шокируйтесь от не правильности написания макросов) Я новичек) Толькобы эту ошибку исправить. Изменено: Fuad1992 — 05.06.2018 19:02:19 |
|
Fuad1992 Пользователь Сообщений: 77 |
Там ведётся конвертация валют, на верху есть выпадающий список который отображает все просуммировав в разных валютах, надо только выбрать валюту и он покажет. |
|
Nordheim Пользователь Сообщений: 3154 |
#12 05.06.2018 19:04:42 Fuad1992, Дело не в коде, а скорее всего в значении которое вбито в TextBox, на который делится.
может быть 0, а на ноль как известно делить нельзя, поэтому и ошибка вылетает. «Все гениальное просто, а все простое гениально!!!» |
||
|
Hugo Пользователь Сообщений: 26532 |
А где вообще все эти CurrencyEur без значений? |
|
vikttur Пользователь Сообщений: 47168 |
#14 05.06.2018 19:06:56
И что Вы хотите? CurrencyEur.value = «», Val(«»)=0, деление на ноль — ошибка |
||
|
Fuad1992 Пользователь Сообщений: 77 |
Спасибо за отзыв. Всем спасибо. |
|
Nordheim Пользователь Сообщений: 3154 |
У меня уже на стадии активации формы ошибка «Все гениальное просто, а все простое гениально!!!» |
|
vikttur Пользователь Сообщений: 47168 |
Чтобы не мешали открыть, я отключил две строки, вызывающие ошибку при активации. CurrencyUsd.value=1.7050 |
|
Hugo Пользователь Сообщений: 26532 |
Нашёл, забил в свойствах по единице — открылось без ошибок. Изменено: Hugo — 05.06.2018 19:21:11 |
|
Fuad1992 Пользователь Сообщений: 77 |
#19 05.06.2018 19:14:37
Уважаемый Модератор. Проблема в том, что значение там есть. |
||
|
Fuad1992 Пользователь Сообщений: 77 |
#20 05.06.2018 19:15:20
))) |
||
|
Nordheim Пользователь Сообщений: 3154 |
В коде черт ногу сломает, посмотрите в сторону модулей класса, может и делиться начнет нормально «Все гениальное просто, а все простое гениально!!!» |
|
Hugo Пользователь Сообщений: 26532 |
|
|
Fuad1992 Пользователь Сообщений: 77 |
Я а VBA не полный 0 конечно, но чуть чуть есть) Мне кажется только 1 раз делить можно,, такое впечатление создалось. |
|
vikttur Пользователь Сообщений: 47168 |
1. Сообщение не от модератора, а от посетителя форума. |
|
webley Пользователь Сообщений: 2176 |
У меня тоже получилось вызвать эту ошибку только разделив на ноль. А так работает… |
|
Fuad1992 Пользователь Сообщений: 77 |
#26 05.06.2018 19:20:31
Нет нет, это не ошибка зеленый появился методом проб. А так там валюты все разные. Изменено: Fuad1992 — 05.06.2018 19:22:19 |
||
|
Hugo Пользователь Сообщений: 26532 |
|
|
Fuad1992 Пользователь Сообщений: 77 |
#28 05.06.2018 19:24:00
Согласен) сам путаюсь иногда) |
||
|
vikttur Пользователь Сообщений: 47168 |
#29 05.06.2018 19:24:54 Вот, в коде инициализации:
Евро Вы таки обидели. |
||
|
Hugo Пользователь Сообщений: 26532 |
#30 05.06.2018 19:26:42 Виктор, я это уже проходил. Ты тоже без очков смотришь? Изменено: Hugo — 05.06.2018 19:34:54 |
Помогите пожалуйста разобраться. Все время возникает ошибка Runtime error ‘6’ Overflow в VBA.
Ошибка возникает в этой строке «If WBook.Cells(q, 7) = ArrayPhoneAll(i) Then»
В столбце находятся телефонные номера или email, если поменять номер столбца, никакой ошибки не возникает.
Sub RegisterComplaintsPhone()
Dim n As Integer
Dim q As Long
n = 1
Set WBook = Workbooks("ДС_Реестр жалоб ГЛ и ЧАТ 09.07.2021222.xlsx").Worksheets("ДС_ГЛ, ЧАТ")
ReDim ArrayPhone(n) As Variant
ReDim ArraySuccess(n) As Variant
ReDim ArrayResult(n) As Variant
ReDim ArrayPhone(n) As Variant
ReDim ArrayFIO(n) As Variant
ReDim ArrayDS(n) As Variant
ReDim ArrayEmployee(n) As Variant
ReDim ArrayEmployeeAll(n) As Variant
ReDim ArrayDSAll(n) As Variant
ReDim ArrayPhoneAll(n) As Variant
ReDim ArrayResultAll(n) As Variant
n = 1
For w = 2 To 300
If Worksheets("ДС").Cells(w, 2) <> "" Then
ArrayPhoneAll(n) = Worksheets("ДС").Cells(w, 14).Value
ArrayEmployeeAll(n) = Worksheets("ДС").Cells(w, 3).Value
ArrayResultAll(n) = Worksheets("ДС").Cells(w, 2).Value
Worksheets("ДС").Cells(w, 19) = ArrayPhoneAll(n)
Worksheets("ДС").Cells(w, 20) = ArrayEmployeeAll(n)
Worksheets("ДС").Cells(w, 21) = ArrayResultAll(n)
n = n + 1
'ReDim Preserve ArrayDSAll(n)
ReDim Preserve ArrayPhoneAll(n)
ReDim Preserve ArrayEmployeeAll(n)
ReDim Preserve ArrayResultAll(n)
End If
Next
n = 1
MsgBox ArrayPhoneAll(1)
For i = 1 To UBound(ArrayPhoneAll) - 1
For q = 2 To 20000
If WBook.Cells(q, 7) = ArrayPhoneAll(i) Then
WBook.Cells(q, 31) = ArrayPhoneAll(i)
End If
Next
Next
End Sub
