Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2010, 12:31   #1
Solex
Пользователь
 
Регистрация: 09.02.2010
Сообщений: 12
По умолчанию Ошибка Out of stack space и др

При работе макроса вылазят ошибки - возникает рекурсия
Макрос находится на Листе 2 - работает при изменении ячеек:
При изменении значений в оранжевых полях и расширяет высоты строк для голубых ячеек (только для длинных)
Подскажите как можно исправить
и облегчить код, а то сильно грузит комп
Вложения
Тип файла: rar 70210(2).rar (39.6 Кб, 13 просмотров)

Последний раз редактировалось Solex; 09.02.2010 в 16:56.
Solex вне форума Ответить с цитированием
Старый 09.02.2010, 21:52   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Solex.
"как можно исправить..и облегчить.." :
1. в начале выполнения процедуры выключить (False), в конце включить (True) обновление экрана Application.ScreenUpdating = ...
2. вынести в отдельную процедуру однотипный код.
3. организовать выполнение только при условии соответствия адреса, с одной проверкой
примерно так:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
With Target
If .Column = 2 Then 
    Select Case .Row
    Case 14, 38, 41, 43, 47
        heightRow Range(Cells(.Row, .Column))
    ...
    End Select
ElseIf .Column = 8 Then
     ...
...
End If
End With
Application.ScreenUpdating = True
End Sub
Sub heightRow(oRng As Range) ' не совсем понятно назначение?
Const H = 16.5
Dim i%
    i = (Len(oRng.Text) / 68) + 1
    oRng.RowHeight = i * H
End Sub
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 10.02.2010, 09:47   #3
Solex
Пользователь
 
Регистрация: 09.02.2010
Сообщений: 12
По умолчанию

Спасибо как раз то что нужно!)
Solex вне форума Ответить с цитированием
Старый 10.02.2010, 10:21   #4
Solex
Пользователь
 
Регистрация: 09.02.2010
Сообщений: 12
Печаль

Цитата:
Сообщение от Teslenko_EA Посмотреть сообщение
Здравствуйте Solex.

...

Sub heightRow(oRng As Range) ' не совсем понятно назначение?

Назначение этой части кода для подбора высототы строки, просто не знаю как по-другому
Solex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DelphiX. Странная ошибка - Stack Overflow Uxas Общие вопросы Delphi 7 08.06.2010 14:24
space invaders Alfonso1 Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 20.11.2009 13:23
Out of stack space (Error 28) legion-mia Microsoft Office Excel 9 15.06.2009 16:21
При переключении между чекбоксами - ошибка Stack overflow. Как исправить эту ошибку? SkAndrew Общие вопросы Delphi 5 26.08.2008 21:32
Space Master 1994 deltashadow Gamedev - cоздание игр: Unity, OpenGL, DirectX 6 08.08.2007 11:14