powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Где ошибка?
10 сообщений из 10, страница 1 из 1
Где ошибка?
    #36994528
RaWaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
Private Sub Worksheet_Change(ByVal Target As Range)


Dim g
Dim mnoz, pik1, pik2, pik3, pik4, pik5 As Integer
Dim stroka As String
stroka = ""
kolvo1 = ""
kolvo2 = ""
kolvo3 = ""
kolvo4 = ""
kolvo5 = ""
        g = Cells( 22 ,  5 ).Value
        chas = Cells( 23 ,  4 ).Value
        If Left(chas,  1 ) = "О" Then mnoz =  1 
            If Left(chas,  1 ) = "Д" Then mnoz =  2 
                If Left(chas,  1 ) = "Т" Then mnoz =  3 
               
                
        pik1 =  330000  * mnoz
        pik2 =  150000  * mnoz
        pik3 =  75000  * mnoz
        pik4 =  30000  * mnoz
        pik5 =  5000  * mnoz

        
        If g > pik1 -  1  Then
        kolvo1 = g \ pik1
        g = g Mod pik1
        End If
            If g > pik2 -  1  Then
            kolvo2 = g \ pik2
            g = g Mod pik2
            End If
                If g > pik3 -  1  Then
                kolvo3 = g \ pik3
                g = g Mod pik3
                End If
                    If g > pik4 -  1  Then
                    kolvo4 = g \ pik4
                    g = g Mod pik4
                    End If
                        If g > pik5 -  1  Then
                        kolvo5 = g \ pik5
                        g = g Mod pik5
                        Else
                        End If
        
        If kolvo1 <> "" Then stroka = stroka & "Количество пакетов за 99 USD=  " & kolvo1 & Chr( 10 )
        If kolvo2 <> "" Then stroka = stroka & "Количество пакетов за 49 USD=  " & kolvo2 & Chr( 10 )
        If kolvo3 <> "" Then stroka = stroka & "Количество пакетов за 25 USD=  " & kolvo3 & Chr( 10 )
        If kolvo4 <> "" Then stroka = stroka & "Количество пакетов за 10 USD=  " & kolvo4 & Chr( 10 )
        If kolvo5 <> "" Then stroka = stroka & "Количество пакетов за 1,99 USD=  " & kolvo5 & Chr( 10 )
        
        
        stroka = stroka & "Остаток: " & g

       Cells( 23 ,  5 ) = stroka




End Sub

если mnoz = 2 или 3 то строчка Cells(23, 5) = stroka вызывает ошибку, пишет что недостаточно системных ресурсов для отображения всей информации.
...
Рейтинг: 0 / 0
Где ошибка?
    #36994762
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RaWaS,

лично у меня не вызывает
выкладывайте файл
...
Рейтинг: 0 / 0
Где ошибка?
    #36994779
RaWaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот
...
Рейтинг: 0 / 0
Где ошибка?
    #36994962
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RaWaS,

а в xls можно?
...
Рейтинг: 0 / 0
Где ошибка?
    #36995059
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алгоритм примерно понятен, но он здесь ни при чём.
Вы просто внутри Worksheet_Change изменяете ячейки, что приводит к повторному вызову функции...
Так что либо вставьте в начало
Код: plaintext
If Target.Row= 23  And Target.Column= 5  Then Exit Sub
либо производите расчет только при изменении определённых ячеек или повесьте на листе кнопку для расчета.
...
Рейтинг: 0 / 0
Где ошибка?
    #36995107
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так будет работать:
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Worksheet_Change(ByVal Target As Range)
  Application.EnableEvents = False

  ' Код обработки
 
 Application.EnableEvents = True
End Sub
...
Рейтинг: 0 / 0
Где ошибка?
    #36995111
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,

странненько, но у меня этот код почему-то не зациклился....
...
Рейтинг: 0 / 0
Где ошибка?
    #36995582
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro...странненько, но у меня этот код почему-то не зациклился....
Циклится с переполнением внутреннего буфера памяти в версии 2007.
В предыдущих версиях просто тормозит.
...
Рейтинг: 0 / 0
Где ошибка?
    #36995631
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZVIShocker.Pro...странненько, но у меня этот код почему-то не зациклился....
Циклится с переполнением внутреннего буфера памяти в версии 2007.
В предыдущих версиях просто тормозит.
а нет, зацикливается (в 2к)
но на 203-й итерации останавливается без выдачи каких-либо сообщений (deadlock detected? )
...
Рейтинг: 0 / 0
Где ошибка?
    #37000549
RaWaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZVIВот так будет работать:
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Worksheet_Change(ByVal Target As Range)
  Application.EnableEvents = False

  ' Код обработки
 
 Application.EnableEvents = True
End Sub


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


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