Страницы: 1
RSS
помогите облегчить макрос
 
Если это возможно, конечно.  
Макрос написал один добрый человек с этого форума. Сейчас столкнулся с проблемой: с расширением всяких расчетов макрос начинает тормозить, причем не по-детски.  
 
Это макрос добавления строки в таблицах, коих много. Файлик приложил, разве что повырезал из него большую часть - не влезал в квоту.  
Макрос тормозит на втором листе.  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
вот, еще подрезал  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
{quote}{login=The_Prist}{date=31.10.2010 08:39}{thema=}{post}maragva, нам так и подчищать за Вами или Вы все таки соизволите правила почитать? Или сразу в бан за систематическое нарушение?{/post}{/quote}  
 
Дык, я ж специально посмотрел: второй файл весил 99,3мб, что, вроде как, допустимо, а первый, да, 103мб, не спорю
 
Первый 106, второй 101.
 
Вот непруха-то.... Ладно, я от файла и вовсе кочерыжку оставил, не более 60 весит!  
Только в сохранить пришлось в 2007 с поддержкой макросов, в 2003 почему-то размер в три раза больше получается.  
 
Вопрос остался открытым: помогите упростить макрос (на добавление строки).
 
Тут не упрощать макрос надо, а переписывать "с нуля"...  
 
Во-первых, убираем десятки одинаковых макросов типа этого:  
 
Sub Tabl_26()  
   Tabl = 26  
   Call Tablstca  
End Sub  
 
И пишем вместо них один универсальный.  
 
 
Во-вторых, переключитесь ради интереса на стиль ссылок R1C1 (вместо стиля A1)  
И вы с удивлением обнаружите, что формулы в ваших строках стали одинаковые, но работают по-прежнему.  
 
Это позволит вам избавиться от бОльшей части кода - в частности, от загадочных конструкций типа этой:  
 
Set frng1 = Range("E" & Str + 2)  
           s1 = frng1.Formula  
           sr1 = Right(s1, Len(s1) - InStr(1, s1, ":") - 2)  
           s1 = Replace(s1, sr1, Val(sr1) + 1 & ")")  
 
 
При использовании стиля R1C1 код будет выглядеть так:  
Rows(x).Copy: Rows(x).Insert Shift:=xlDown  
 
Про формулы можете даже не вспоминать - они скопируются корректно.  
Впрочем, они и сейчас копируются корректно - не понимаю, какой смысл их переписывать макросом...  
 
Но если уж так хочется каждый раз вносить формулы заново - это будет делать намного проще:  
Range("G" & 4 + 2).FormulaR1C1 = "=SUM(RC5:RC6)"  
 
 
PS: Полностью переделать код не могу - уж слишком много времени потребуется.  
Хотя, если убрать всё лишнее, - думаю, достаточно будет 5 - 10 строк кода.
 
Эхе-хе...  
Спасибо вам большое. Славно знать, что можно облегчить код...  
Жаль, что я в этом абсолютно беспомощен. Писал макрос ведь не я
Страницы: 1
Читают тему
Наверх
Loading...