powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Польвательские функции /проблема/
10 сообщений из 10, страница 1 из 1
Польвательские функции /проблема/
    #36653504
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Function Yvyazka(b As Integer, st As String, Ch As String, sCh As String)      'расчет графы  № 8 форм 0503128, 0503138
Dim ya As Integer
Dim summa As Double
r =  11 
Dim n As Double
Do While Worksheets("0503169").Cells(r,  2 ) <> ""
    If Worksheets("0503169").Cells(r,  2 ) = b Then
    If Worksheets("0503169").Cells(r,  3 ) = Ch Then
    If Ch =  208  And Worksheets("0503169").Cells(r,  6 ) <  0  Then
    summa = summa +  0 
    Else
    If Worksheets("0503169").Cells(r,  4 ) = sCh Then
    If Worksheets("0503169").Cells(r,  5 ) = st Then
        summa = summa + Worksheets("0503169").Cells(r,  6 )
    End If
    End If
    End If
    End If
    End If
r = r +  1 
Yvyazka = summa
Loop
End Function


При использовании функции как ОПРЕДЕЛЕННАЯ ПОЛЬЗОВАТЕЛЕМ проблема в том, что при изменении цифр на листе 0503169, сумма в ячейке с пользовательской функцией не меняется. Только после того, как снова прописываю формулу, расчитывает правильно
(=Yvyazka(A165;D165;B165;C165)). В чем проблема? Расчет стоит автоматический.
P.S.
У меня 7 офис
...
Рейтинг: 0 / 0
Польвательские функции /проблема/
    #36653590
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tuandreeva,

в начало функции нужно добавить строку:
Application.Volatile
которая покажет екселю, что значение функции нужно пересчитывать при пересчету листа
...
Рейтинг: 0 / 0
Польвательские функции /проблема/
    #36653609
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбоносtuandreeva,

в начало функции нужно добавить строку:
Application.Volatile
которая покажет екселю, что значение функции нужно пересчитывать при пересчету листа

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Function Yvyazka(b As Integer, st As String, Ch As String, sCh As String)      'расчет графы  № 8 форм 0503128, 0503138
Application.Volatile
Dim ya As Integer
Dim summa As Double
r =  11 
Dim n As Double
Do While Worksheets("0503169").Cells(r,  2 ) <> ""
    If Worksheets("0503169").Cells(r,  2 ) = b Then
    If Worksheets("0503169").Cells(r,  3 ) = Ch Then
    If Ch =  208  And Worksheets("0503169").Cells(r,  6 ) <  0  Then
    summa = summa +  0 
    Else
    If Worksheets("0503169").Cells(r,  4 ) = sCh Then
    If Worksheets("0503169").Cells(r,  5 ) = st Then
        summa = summa + Worksheets("0503169").Cells(r,  6 )
    End If
    End If
    End If
    End If
    End If
r = r +  1 
Yvyazka = summa
Loop
End Function

так не работает
...
Рейтинг: 0 / 0
Польвательские функции /проблема/
    #36653658
_Boroda_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tuandreeva,

А если так написать?

=ТЕКСТ(СЛЧИС();";;;")&Yvyazka(A165;D165;B165;C165)
...
Рейтинг: 0 / 0
Польвательские функции /проблема/
    #36653690
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Boroda_,

Считает, но вот получается текст, а не число. А мне нужно число
...
Рейтинг: 0 / 0
Польвательские функции /проблема/
    #36653715
tuandreeva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.Volatile
End Sub
Добавила в сам лист 0503169, и все работает. Всем Спасибо!
...
Рейтинг: 0 / 0
Польвательские функции /проблема/
    #36653722
_Boroda_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tuandreeva,

чтобы число было
=--(ТЕКСТ(СЛЧИС();";;;")&Yvyazka(A165;D165;B165;C165))
...
Рейтинг: 0 / 0
Польвательские функции /проблема/
    #36658866
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tuandreeva
Код: plaintext
1.
2.
3.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.Volatile
End Sub
Добавила в сам лист 0503169, и все работает. Всем Спасибо!

странно:

Marks a user-defined function as volatile. A volatile function must be recalculated whenever calculation occurs in any cells on the worksheet. A nonvolatile function is recalculated only when the input variables change. This method has no effect if it's not inside a user-defined function used to calculate a worksheet cell.
...
Рейтинг: 0 / 0
Польвательские функции /проблема/
    #36660031
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_slan_,

Это обработчик события изменений на листе. Он вызывается самим екселем. И его не нужно объявлять изменяемым. Изменяемые должны быть созданные пользователем функции, которые используются в вычислениях на листе и видны в формула ячеек. :)
...
Рейтинг: 0 / 0
Польвательские функции /проблема/
    #36660035
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_slan_,

Сори, я прочитал что у тебя на этом возникает ошибка.

Мой предыдущий пост адресован ТС
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Польвательские функции /проблема/
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]