Страницы: 1
RSS
пересчет в книге автоматически а не по нажатию ctrl alt f9
 
подскажите как сделать что бы пересчет в книге велся не по нажатию ctrl alt f9 а при изменении какой либо из ячеек
 
В код листа:  
Private Sub Worksheet_Change(ByVal Target As Range)  
Application.Calculate  
End Sub  
Или в модуль "Эта книга":  
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)  
Application.Calculate  
End Sub
 
не работает вставлял и в модуль книги и модуль листа =(
 
работает:
 
!
 
ну вот куда не вставляю не идет пересчет автоматически и в настройках стоит автоматический пересчет =(
 
zzz12zzz!  
В Вашем файле: см. картинку.
 
поменял а считается только один раз(т.е. одну из ячеек меняешь и все пересчитывается но когда меняешь чтото еще все опять застывает пока не нажмешь ctrl alt f9)
 
zzz12zzz!  
Посмотрите файл:
 
Пробовали заходить в Сервис -> параметры -> Вычисления -> установка "Автоматически".
 
{quote}{login=}{date=24.08.2012 12:06}{thema=}{post}Посмотрите файл:{/post}{/quote}  
вообще ничего не ситаетформулы тупо пишут знач на втором листе  
а включать автоматический пересчет пробовал не помогает =(
 
zzz12zzz!  
Ваши формулы связи между листами работают автоматически.  
Функция xxxz?  
См. картинку.
 
немного странная история, мда...  
 
функция xxxz() является функцией, определенной пользователем, находится в стандартном модуле этой же книги и написана без синтаксических ошибок.  
 
да - чрезвычайно неряшливо, да - совершенно непонятно, что и как ею хотели посчитать, но каждый отдельный оператор вполне нормальный.  
 
при открытии с помощью конвертера Ex'2003 ругнулся на элементы ActiveX, других преступлений не нашёл и работать с файлом великодушно дозволил.  
 
обработчики событий книги и листа я безжалостно удалил - не нужны вовсе.  
автопересчет включен.  
работа с отладчиком дала вполне ожидаемый результат - функция работает некорректно (по разным причинам - например, в ходе работы обращаясь к ячейке с номером строки, равным 0 ну или что-то подобное...)  
отсюда и #ЗНАЧ!  
 
но! это выяснилось чуть позже.  
а в начале отладки функция уходила в нирвану после безобидного оператора  
set z=worksheets("лист1").cells(sm1, L)  
 
да, переменная z автором не объявлена, но явное описание    
Dim z As Range  
ничего не поменяло.  
нет, лист с таким именем существует, переменные имеют допустимые значения (хоть и типа Variant), вроде бы всё нормально...  
 
делю оператор на составные части:  
dim wb as workbook  
dim ws as worksheet  
dim rng as range  
set wb=thisworkbook  
set ws=wb.worksheets("лист1")  
set rng=ws.cells(sm1, L)  
 
итого:  
нирвана случается именно в строке с set ws=...  
 
проверяю имя листа - абсолютно правильное  
но функция дохнет именно в этом переулке.  
 
пишу так:  
set ws=wb.worksheets(1)  
(ну понятно, что "лист1" - первый).  
 
всё работает. о_О  
 
для некоторых значений вхадящего аргумента функции (для других - возникают те самые нулевые адреса и проч.), но РАБОТАЕТ!  
 
что это?  
глюки конвертера? барабашки? или расширение вселенной таки закончилось?  
 
меня потихоньку покидает вера в разум.  
:(
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
уже все разобрался если кому пригодится прикрепляю файлик с рабочей формулой !!может и некрасиво написанно но я не програмист!
Страницы: 1
Читают тему
Loading...