Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Переполнение данными - OverFlow, как оптимизировать? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Переполнение данными - OverFlow, как оптимизировать? (Макросы/Sub)
Переполнение данными - OverFlow, как оптимизировать?
QwertyBoss Дата: Четверг, 03.12.2015, 21:21 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
При запуске выдаёт "OverFlow" ... :'( . Почти окончательный вариант состряпал, запустил.. и всё. Побовал менять переменные на double, single, long ... все равно ошибка не пропадает.
Что делать ? Без "галочек" весь смысл проподает =(
К сообщению приложен файл: 4346215.xlsm (66.0 Kb)


Сообщение отредактировал QwertyBoss - Четверг, 03.12.2015, 21:33
 
Ответить
СообщениеПри запуске выдаёт "OverFlow" ... :'( . Почти окончательный вариант состряпал, запустил.. и всё. Побовал менять переменные на double, single, long ... все равно ошибка не пропадает.
Что делать ? Без "галочек" весь смысл проподает =(

Автор - QwertyBoss
Дата добавления - 03.12.2015 в 21:21
Roman777 Дата: Четверг, 03.12.2015, 21:54 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
QwertyBoss, Не разбирался толком что именно делает Ваш макрос. Но если Вам не нужны лишние срабатывания события, поиграйтесь с Application.EnableEvents.
Но сама проблема с
"OverFlow"
я думаю вызвана большим кол-вом ячеек, которые у Вас выделяеются при контрл+A.
Поэтому необходимо вначале события выделения поставить условие выхода из процедуры, при превышении определённого количества выделенных ячеек:
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim b As Long
    If Target.Rows.Count > 1 Then Exit Sub
    If Target.Column = 9 And Target.Row > 1 Then
 '   Application.EnableEvents = False
        Target = IIf(Target = "", "a", "")
        Target.Next.Select
 '   Application.EnableEvents = True
    End If
    End If
End Sub
[/vba]


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Пятница, 04.12.2015, 08:55
 
Ответить
СообщениеQwertyBoss, Не разбирался толком что именно делает Ваш макрос. Но если Вам не нужны лишние срабатывания события, поиграйтесь с Application.EnableEvents.
Но сама проблема с
"OverFlow"
я думаю вызвана большим кол-вом ячеек, которые у Вас выделяеются при контрл+A.
Поэтому необходимо вначале события выделения поставить условие выхода из процедуры, при превышении определённого количества выделенных ячеек:
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim b As Long
    If Target.Rows.Count > 1 Then Exit Sub
    If Target.Column = 9 And Target.Row > 1 Then
 '   Application.EnableEvents = False
        Target = IIf(Target = "", "a", "")
        Target.Next.Select
 '   Application.EnableEvents = True
    End If
    End If
End Sub
[/vba]

Автор - Roman777
Дата добавления - 03.12.2015 в 21:54
Hugo Дата: Четверг, 03.12.2015, 21:56 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3254
Репутация: 707 ±
Замечаний: 0% ±

2019
[vba]
Код
Sub Сливание()
Application.EnableEvents = False
....
Application.EnableEvents = True
End Sub
[/vba]


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
Сообщение[vba]
Код
Sub Сливание()
Application.EnableEvents = False
....
Application.EnableEvents = True
End Sub
[/vba]

Автор - Hugo
Дата добавления - 03.12.2015 в 21:56
SLAVICK Дата: Четверг, 03.12.2015, 23:16 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
С телефона код в файле не вижу, но на вскидку overflow может возникнуть при большом количестве выделенных ячеек.
Замените
[vba]
Код
Target.count
На
Target.countlarge
[/vba]


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Четверг, 03.12.2015, 23:18
 
Ответить
СообщениеС телефона код в файле не вижу, но на вскидку overflow может возникнуть при большом количестве выделенных ячеек.
Замените
[vba]
Код
Target.count
На
Target.countlarge
[/vba]

Автор - SLAVICK
Дата добавления - 03.12.2015 в 23:16
Roman777 Дата: Пятница, 04.12.2015, 08:59 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
SLAVICK, можете подсказать, в чём принципиальная разница, не пойму, почему:
[vba]
Код
Target.count
[/vba] - вызывает ошибку, а [vba]
Код
Target.countlarge
[/vba] нет
всё, разобрался, получается .countlarge тоже самое что и .count, только рассчитано на бОльший диапазон ячеек?


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Пятница, 04.12.2015, 09:02
 
Ответить
СообщениеSLAVICK, можете подсказать, в чём принципиальная разница, не пойму, почему:
[vba]
Код
Target.count
[/vba] - вызывает ошибку, а [vba]
Код
Target.countlarge
[/vba] нет
всё, разобрался, получается .countlarge тоже самое что и .count, только рассчитано на бОльший диапазон ячеек?

Автор - Roman777
Дата добавления - 04.12.2015 в 08:59
SLAVICK Дата: Пятница, 04.12.2015, 10:42 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Почитайте детально тут.
Когда-то давно - когда на листа было макс. 65тыс строк и всего 255 столбцов - был придуман метод Count, и его хватало с головой (2,147,483,647)
Но с появлением нового формата листа нужно уже 17,179,869,184 вот и приходит на помощь новый Countlarge :D


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Пятница, 04.12.2015, 10:42
 
Ответить
СообщениеПочитайте детально тут.
Когда-то давно - когда на листа было макс. 65тыс строк и всего 255 столбцов - был придуман метод Count, и его хватало с головой (2,147,483,647)
Но с появлением нового формата листа нужно уже 17,179,869,184 вот и приходит на помощь новый Countlarge :D

Автор - SLAVICK
Дата добавления - 04.12.2015 в 10:42
Hugo Дата: Пятница, 04.12.2015, 14:54 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3254
Репутация: 707 ±
Замечаний: 0% ±

2019
А там в коде употребляется Target.count? Сейчас не могу посмотреть файл.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеА там в коде употребляется Target.count? Сейчас не могу посмотреть файл.

Автор - Hugo
Дата добавления - 04.12.2015 в 14:54
SLAVICK Дата: Пятница, 04.12.2015, 15:09 | Сообщение № 8
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
А там в коде употребляется Target.count? Сейчас не могу посмотреть файл.

вот :D ,сам вчера с телефона смотрел жутко неудобно:
[vba]
Код
If Target.Column = 9 And Target.Row > 1 And Target.Count = 1 Then
[/vba]


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Пятница, 04.12.2015, 15:09
 
Ответить
Сообщение
А там в коде употребляется Target.count? Сейчас не могу посмотреть файл.

вот :D ,сам вчера с телефона смотрел жутко неудобно:
[vba]
Код
If Target.Column = 9 And Target.Row > 1 And Target.Count = 1 Then
[/vba]

Автор - SLAVICK
Дата добавления - 04.12.2015 в 15:09
Roman777 Дата: Пятница, 04.12.2015, 15:54 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
[offtop] SLAVICK, как Вы с телефона макросы открываете экселевские?[/offtop]


Много чего не знаю!!!!
 
Ответить
Сообщение[offtop] SLAVICK, как Вы с телефона макросы открываете экселевские?[/offtop]

Автор - Roman777
Дата добавления - 04.12.2015 в 15:54
SLAVICK Дата: Пятница, 04.12.2015, 16:11 | Сообщение № 10
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Оффтоп:
Нет - просто на сайт захожу(и на моем телефоне - жутко не удобно) - вчера увидел Ваш код и он меня натолкнул на мысль, что где-то в коде присутствует Target.Count - как оказалось угадал :D
Пока из того что я видел для андроида - бесплатные проги макросы не показывают :( будем ждать


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеОффтоп:
Нет - просто на сайт захожу(и на моем телефоне - жутко не удобно) - вчера увидел Ваш код и он меня натолкнул на мысль, что где-то в коде присутствует Target.Count - как оказалось угадал :D
Пока из того что я видел для андроида - бесплатные проги макросы не показывают :( будем ждать

Автор - SLAVICK
Дата добавления - 04.12.2015 в 16:11
QwertyBoss Дата: Пятница, 04.12.2015, 20:47 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спс. Помогло! Но виснет... жуть! Ща буду разбираться в причине.
 
Ответить
СообщениеСпс. Помогло! Но виснет... жуть! Ща буду разбираться в причине.

Автор - QwertyBoss
Дата добавления - 04.12.2015 в 20:47
QwertyBoss Дата: Пятница, 04.12.2015, 21:36 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Разобрался...Красота!!! hands
 
Ответить
СообщениеРазобрался...Красота!!! hands

Автор - QwertyBoss
Дата добавления - 04.12.2015 в 21:36
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Переполнение данными - OverFlow, как оптимизировать? (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!