Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
автозакрытие Excel
 
Доброго времени суток!

Столкнулся со следующей проблемой: написал макрос для пакетной обработки данных в куче Excel-файлов, но через примерно 30 сек. его работы винда (Win 7) вырубает Exel как зависшее приложение, т.к. оно не отвечает.
Не много поковыряв интернет понимаю, что отключать эту функцию винды нельзя. Подскажите, пожалуйста, как исправить проблему средствами Excel?
Локальные переменные
 
Доброго време суток!
Есть 2 функции, одна вызывается из другой. Функции в разных модулях.
Код
Модуль 1:
Sub ggg()
   Dim a0, b0, c0, d0 As Single
   a0 = 5
   b0 = 10
   d0 = hhh(a0, b0)
End Sub

Модуль 2:
Код
Public Function hhh(a, b)
   a = a * b
   hhh= a
End Function

Функция ggg() является основной, в процессе ее выполнения переменной a0 присваивается какое-то значение, после вызова "вспомогательной" функции значение a0 меняется. Подскажите, пожалуйста, как сделать чтобы этого не происходило?
Автовычисление некоторых формул не работает
 
Доброго времени суток!  
 
При двойном клике на "+" в первом столбце листа "МХ" появляется ЮзерФорм, кнопка "Добавить" - добавляет на листы "МХ" и "Удельные" новые строки с формулами. На листе "Удельные" в столбце "I" забита пользовательская функция, которая автоматически не пересчитывается, например, при изменении температуры на листе "Температуры" (ячейки "G6", "H6").  
А вот почему так происходит я понять не могу (
Оформление таблицы макросом
 
Доброго времени суток!  
В модуле листа 1 записано:  
With Лист1.Range(Cells(i - 1, 2), Cells(i - 1, 11)).Borders(xlEdgeBottom)  
   .LineStyle = xlDouble  
   .Weight = xlThick  
   .ColorIndex = xlAutomatic  
End With  
Лист2.Activate  
With Лист2.Range(Cells(i - 1, 1), Cells(i - 1, 9)).Borders(xlEdgeBottom)  
   .LineStyle = xlDouble  
   .Weight = xlThick  
   .ColorIndex = xlAutomatic  
End With  
Лист1.Activate  
Все работает, все оформлено как надо.  
А если убрать .Activate, то выдает ошибку на строке With Лист2...  
Как можно применить оформление к одному листу из модуля другого листа без его .Activate?
Транспонирование массива
 
Доброго времени суток!  
Есть массив из одной строки и N столбцов, например  
mas=Лист1.Range("A1:D1")  
нужно сделать так, чтоб к нему можно было обращаться так: mas(i), функция    
mas=Application.Transpose(Лист1.Range("A1:D1")) желаемого результата не дала (получилось mas(i,1))
Где правильно объявить глобальную переменную?
 
Доброго времени суток!  
Где правильно объявить глобальную переменную, чтобы значение ей присвоенное в одной процедуре можно было использовать в другой?  
 
Пример прилагается.  
В файле: при двойном клике по ячейке "+" (в первом столбце) отображается ЮзерФорм. При выборе OptionButton1 на листе "МХ" должна добавиться предварительно заполненная строка. На мой взгляд самым оптимальным вариантом связать события BeforeDoubleClick и OptionButton_Change - это глобальная переменная: при событии OptionButton_Change ей присваивается событие, и далее в BeforeDoubleClick идет проверка значения и выполнение действий. Вот только значение переменной не сохраняется (
Копирование строки двумерного массива
 
Доброго времени суток!  
 
Подскажите, пожалуйста, как выделить из двумерного массива строку в одномерный массив не используя последовательный перебор?  
 
Например:    
есть двумерный массив: Worksheets("нормы 1959").Range("B9:D35")  
есть ранее определенный номер строки с необходимыми данными: ID_диам  
необходимо создать одномерный массив Mas_Qn, содержащий строку номер ID_диам двумерного массива  
 
Пробовал конструкцию:  
Dim Mas_Qn(UBound(Mas_T)) As Double  
Mas_Qn = Worksheets("нормы 1959").Range("B9:D35").Rows(ID_диам)  
не работает (
Линейная интерполяция
 
Доброго времени суток!  
 
Нужно выполнить линейную интерполяцию/экстраполяцию данных. Для решения сей задачи, в связи с отсутствием готовой функции в Excel, написал функцию, которая отлично работала пока я в нее передавал данные типа double. Сейчас мне нужно использовать ее отдельно от основного макроса и нужно передавать в нее данные с листа (типа Variant). Вот здесь то я и споткнулся...  
 
Все подробности в файле.  
 
Если кто-нить знает как оптимизировать код макроса, подскажите, плз.
Удаление строки по двойному клику на первую ячейку
 
Доброго вромени суток!  
 
Есть несколько построчно взаимосвязанных формулами таблиц и возникла необходимость удалить строку с данными, причем для корректности расчетов это нужно делать одновременно на трех листах из книги (всего более 15 листов). Поковырявшись в интернете пришел к выводу, что наилучшый вариант на первом (базовом) листе расчета добавить столбик "А", в котором перед каждой строкой расчета поставить букву "Х" и по двойному клику по ячейке с буквой "Х" столбца "А" удаляется соответствующая строка как на первом листе, так и на двух взаимосвязанных (номера строк совпадают). Получился следующий макрос:  
 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)  
If Target.Cells.Count > 1 Then Exit Sub  
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then  
   Target.Rows.Delete  
End If  
End Sub  
 
Данный макрос удаляет по двойному клику любую ячейку в диапазоне "А1:А100".  
Как добавить к нему фильтр по содержанию ячейки (я не понял, а точнее у меня не получилось)?  
И еще как заставить макрос удалять строки на других листах?
Страницы: 1
Наверх