Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Где ошибка? / 10 сообщений из 10, страница 1 из 1
03.12.2010, 20:12
    #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
04.12.2010, 00:28
    #36994762
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где ошибка?
RaWaS,

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

а в xls можно?
...
Рейтинг: 0 / 0
04.12.2010, 14:37
    #36995059
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где ошибка?
Алгоритм примерно понятен, но он здесь ни при чём.
Вы просто внутри Worksheet_Change изменяете ячейки, что приводит к повторному вызову функции...
Так что либо вставьте в начало
Код: plaintext
If Target.Row= 23  And Target.Column= 5  Then Exit Sub
либо производите расчет только при изменении определённых ячеек или повесьте на листе кнопку для расчета.
...
Рейтинг: 0 / 0
04.12.2010, 15:55
    #36995107
ZVI
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
04.12.2010, 16:00
    #36995111
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где ошибка?
AndreTM,

странненько, но у меня этот код почему-то не зациклился....
...
Рейтинг: 0 / 0
05.12.2010, 04:27
    #36995582
ZVI
ZVI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где ошибка?
Shocker.Pro...странненько, но у меня этот код почему-то не зациклился....
Циклится с переполнением внутреннего буфера памяти в версии 2007.
В предыдущих версиях просто тормозит.
...
Рейтинг: 0 / 0
05.12.2010, 11:17
    #36995631
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где ошибка?
ZVIShocker.Pro...странненько, но у меня этот код почему-то не зациклился....
Циклится с переполнением внутреннего буфера памяти в версии 2007.
В предыдущих версиях просто тормозит.
а нет, зацикливается (в 2к)
но на 203-й итерации останавливается без выдачи каких-либо сообщений (deadlock detected? )
...
Рейтинг: 0 / 0
07.12.2010, 20:38
    #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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Где ошибка? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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