Страницы: 1
RSS
отладка кода vba , неожиданно закидывает в vba функцию без видимых причин
 
Есть пользовательская функция для моих расчетов. На листах эксель эта функция производит некоторые расчеты. Вот ее код:
Код
Function zapoln(table As Range, num_st As Integer, num_vhoda As Range, usmin As Integer, usmax As Integer)
Application.Volatile
Dim ax()
   
Set arr = table

Min = usmin
Max = usmax
s = num_st
With table.Parent
   h = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
 'количество элементов массива

For i = 1 To h
    If arr(i, s) > Min And arr(i, s) < Max Then
         n = n + 1
        ReDim Preserve ax(n)  ' Preserve переопределение с сохр всех значений
        ax(n) = arr(i, 1)
    End If
Next i
arr = ax

isk = num_vhoda.Row
On Error GoTo Err_SomeName
   zapoln = arr(isk)
Exit_SomeName:
     Exit Function
Err_SomeName:
    zapoln = 0
Resume Exit_SomeName

End Function
При запуске и отладке кода иных процедур пошагово, неожиданно происходит "влет" в эту функцию. Так происходит пока не удалишь с листа все формулы с этой функцией. Не пойму как ее правильно отладить и почему так происходит.
 
Цитата
Sla_0412 написал: почему так происходит
Цитата
Sla_0412 написал: Так происходит пока не удалишь с листа все формулы с этой функцией.
Отключите автопересчет
Согласие есть продукт при полном непротивлении сторон
 
Sanja,что за автопересчет?. Настройки экселя в формулах?
 
1 Application.Volatile  там написано The function will be recalculated when any cell in any workbook in the application window changes value.  То есть будет вызываться  вне зависимости от того менялось ли что в аргументах и нужно ли пересчиттывать.
2. либо отключать  Application.Calculation = xlCalculationManual  основном скрипте и потом возвращать обратно незабывать. Также при ошибках не забывайте вернуть калькуляцию.
либо отключать в опциях Excel, да в формулах.
Изменено: БМВ - 25.02.2017 19:28:31
По вопросам из тем форума, личку не читаю.
 
Короче удалил строку Application.Volatile . Но Глюк исчез после перезагрузки эксельки.
 
Цитата
Sla_0412 написал: Но Глюк исчез после перезагрузки эксельки
Пока Вы не перейдете с уровня 'эксельки' на, хотя бы, Excel, глюки будут продолжаться
Согласие есть продукт при полном непротивлении сторон
 
Sanja, +++!!!
 
Sanja,стараюсь как могу. Вы себя вспомните, когда все начиналось у вас. Да и "экселька" - по мне звучит, положительно.Разве не так? :)
 
Sla_0412, я ведь тоже частенько так говорю, это от любви к этому произведению множества талантливых людей в этой сфере. Sanja ,как я понял, сказал, что нужно это глубже изучать, а не наскоком, если хочешь сделать что-то стоящее. Наверное, мы все на этом форуме и оказались по этой причине  :)
 
offtop
Sanja ответ оценил. 5+

На самом деле, называть можно как угодно,  лишь бы понимать и то, от куда пошло это названием и что оно несет. Для меня это Excellent Cell.уже много, много лет.
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх