powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ограничения циклов
23 сообщений из 23, страница 1 из 1
ограничения циклов
    #35484304
Nomad87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
народ, вот столкнулся с такой проблеммой:
у меня довольно большая вложенность циклов получилась (6)
for
for
do while
loop
do while
loop
for
for
next
next
+там ещё несколько if then
и если я добавлю ещё один цикл while то у меня начинают выскакивать ошибки типа
он видит концы циклов но не видит их начала (next withhout block for ) или (end if withhout block if) /// вот что делать, подскажите?
если нужно - могу весь пример скинуть .. 0:-)
...
Рейтинг: 0 / 0
ограничения циклов
    #35484306
Фотография Restavraciya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Указывать чей next, тогда ему будет проще
Если конечно ошибок нет
...
Рейтинг: 0 / 0
ограничения циклов
    #35484311
Nomad87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ошибок нет, если я убираю свой "новый" цикл, все опять работает ..
если делаю так как вы сказали - не помогает %(
...
Рейтинг: 0 / 0
ограничения циклов
    #35484316
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кидайте пример
а то на представленом примере уж точно не хватает операторов next


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
ограничения циклов
    #35484317
Фотография Restavraciya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторесли нужно - могу весь пример скинутьСкидывайте
...
Рейтинг: 0 / 0
ограничения циклов
    #35484337
Nomad87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот собственно, проблемное место выделю жирным шрифтом

Dim fnd, n1, s As Byte
Dim q As Byte
Dim bol As Boolean
bol = False
Dim text As String
Dim d As Date
Dim tx As String
Dim fin, u, fox As Byte
Dim Sum, Sum1 As Long
Sum = 0
Sum1 = 0
For h = 1 To Workbooks(nameIn).Sheets.count
If Workbooks(nameIn).Sheets(h).name <> "Шаблон" Then
n1 = Workbooks(nameIn).Sheets(h).Range("B500").End(xlUp).Row
For s = 1 To n1
text = Workbooks(nameIn).Sheets(h).Range("A" & s)
fnd = InStr(1, text, "-й этап")
If fnd >= 2 Then
bol = True
End If
If bol = True Then
Dim obj As String
Dim std As String
obj = Workbooks(nameIn).Sheets(h).Range("B1").Value
std = Workbooks(nameIn).Sheets(h).Range("B3").Value
If Workbooks(nameIn).Sheets(h).Range("D" & s).Value <> "" Then
d = CDate(Workbooks(nameIn).Sheets(h).Range("D" & s).Value)
Do While Workbooks(nameIn).Sheets(h).Range("A" & s + 1).Value = ""
tx = Workbooks(nameIn).Sheets(h).Range("B" & s + 1)
fin = InStr(1, tx, "БТП")
fox = InStr(1, tx, "****")
If (fin > 0) Or (fox > 0) Then
u = s + 2
Do While Workbooks(nameIn).Sheets(h).Range("E" & u).Value <> ""
Sum = Sum + Val(Workbooks(nameIn).Sheets(h).Range("E" & u).Value)
u = u + 1
Loop
u = 0
End If
If fin = 0 Then
u = s + 2
Do While Workbooks(nameIn).Sheets(h).Range("E" & u).Value <> ""
Sum1 = Sum1 + Val(Workbooks(nameIn).Sheets(h).Range("E" & u).Value)
u = u + 1
Loop
u = 0
End If
With ActiveWorkbook
For i = LBound(arMonth, 1) To UBound(arMonth, 1)
For j = 0 To count - 1
If (Month(d) = i) And (ObjectName(j + 1) = obj) Then
For q = 1 To countr + 1
If (ListObject(q) = obj) And (DopStatys(q) = std) Then
If (ListObject(q) = ObjectName(j + 1)) And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
If (StatysObject(q) = "Îñíîâíîé") And (DopStatys(q) = "äîï ñîãëàøåíèå") And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
Sheets(ActiveWorkbook.Sheets.count - i).Range("B" + CStr(j * 11 + 4)).Value = Workbooks(nameIn).Sheets(h).Range("A" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("E" + CStr(j * 11 + 4)).Value = Workbooks(nameIn).Sheets(h).Range("E" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("F" + CStr(j * 11 + 4)).Value = Sum
Sheets(ActiveWorkbook.Sheets.count - i).Range("G" + CStr(j * 11 + 4)).Value = Sum1
Exit For
End If
If ((StatysObject(q) = "Îñíîâíîé") Or (StatysObject(q) = "îñíîâíîé")) And (DopStatys(q) = "") And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
Sheets(ActiveWorkbook.Sheets.count - i).Range("B" + CStr(j * 11 + 3)).Value = Workbooks(nameIn).Sheets(h).Range("A" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("E" + CStr(j * 11 + 3)).Value = Workbooks(nameIn).Sheets(h).Range("E" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("F" + CStr(j * 11 + 3)).Value = Sum
Sheets(ActiveWorkbook.Sheets.count - i).Range("G" + CStr(j * 11 + 3)).Value = Sum1
Exit For
End If
If (StatysObject(q) = "Àâòîðñêèé") And (DopStatys(q) = "äîï ñîãëàøåíèå") And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
Sheets(ActiveWorkbook.Sheets.count - i).Range("B" + CStr(j * 11 + 6)).Value = Workbooks(nameIn).Sheets(h).Range("A" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("E" + CStr(j * 11 + 6)).Value = Workbooks(nameIn).Sheets(h).Range("E" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("F" + CStr(j * 11 + 6)).Value = Sum
Sheets(ActiveWorkbook.Sheets.count - i).Range("G" + CStr(j * 11 + 6)).Value = Sum1
Exit For
End If
If ((StatysObject(q) = "Àâòîðñêèé") Or (StatysObject(q) = "àâòîðñêèé")) And (DopStatys(q) = "") And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
Sheets(ActiveWorkbook.Sheets.count - i).Range("B" + CStr(j * 11 + 5)).Value = Workbooks(nameIn).Sheets(h).Range("A" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("E" + CStr(j * 11 + 5)).Value = Workbooks(nameIn).Sheets(h).Range("E" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("F" + CStr(j * 11 + 5)).Value = Sum
Sheets(ActiveWorkbook.Sheets.count - i).Range("G" + CStr(j * 11 + 5)).Value = Sum1
Exit For
End If
If (StatysObject(q) = "ÃÝÌ") And (DopStatys(q) = "äîï ñîãëàøåíèå") And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
Sheets(ActiveWorkbook.Sheets.count - i).Range("B" + CStr(j * 11 + 8)).Value = Workbooks(nameIn).Sheets(h).Range("A" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("E" + CStr(j * 11 + 8)).Value = Workbooks(nameIn).Sheets(h).Range("E" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("F" + CStr(j * 11 + 8)).Value = Sum
Sheets(ActiveWorkbook.Sheets.count - i).Range("G" + CStr(j * 11 + 8)).Value = Sum1
Exit For
End If
If ((StatysObject(q) = "ÃÝÌ") Or (StatysObject(q) = "ãýì")) And (DopStatys(q) = "") And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
Sheets(ActiveWorkbook.Sheets.count - i).Range("B" + CStr(j * 11 + 7)).Value = Workbooks(nameIn).Sheets(h).Range("A" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("E" + CStr(j * 11 + 7)).Value = Workbooks(nameIn).Sheets(h).Range("E" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("F" + CStr(j * 11 + 7)).Value = Sum
Sheets(ActiveWorkbook.Sheets.count - i).Range("G" + CStr(j * 11 + 7)).Value = Sum1
Exit For
End If
End If
End If
Next q
End If
Next j
Next i
End With
bol = False
Sum = 0
Sum1 = 0
End If ' ругается на эту строчку говорит - не может найти блок ИФ
End If ' ругается на эту строчку говорит - не может найти блок ИФ
Next s
Loop
End If
Next h

вот если убрать do while и loop - все работает ... а так - нет :(
...
Рейтинг: 0 / 0
ограничения циклов
    #35484459
FAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как насчет того что бы пользоваться отсупами?
ИМХО, тогда проблема решиться сама собой.
На первый взлгяд последний loop должен стоять до next s.
Но еще раз повторяю, что читать такой не структурированный код не охота.

Есть еще полезная практика возде каждого loop и End If в комментариях указывать условие по которому они работают, т.е. копировать информацию из операторов do и if.
...
Рейтинг: 0 / 0
ограничения циклов
    #35484491
Nomad87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на самом деле я пользуюсь отступами, но дело в том что если скопировать и вставить то отступы удаляются, а я хотел выделить тот участок где есть проблема.
я думаю, что правильно поставил loop потому как мне нужен был цикл который будет складывать ячейки внутри цикла по ячейкам (счетчик как раз s)
могу кинуть структурированный код + отметить где и что заканчивается

Код: 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.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
Dim fnd, n1, s As Byte
Dim q As Byte
Dim bol As Boolean
     bol = False
Dim text As String
Dim d As Date
Dim tx As String
Dim fin, u, fox As Byte
Dim Sum, Sum1 As Long
     Sum =  0 
     Sum1 =  0 
For h =  1  To Workbooks(nameIn).Sheets.count
    If Workbooks(nameIn).Sheets(h).name <> "Шаблон" Then
        n1 = Workbooks(nameIn).Sheets(h).Range("B500").End(xlUp).Row
           For s =  1  To n1
               text = Workbooks(nameIn).Sheets(h).Range("A" & s)
               fnd = InStr( 1 , text, "-й этап")
           If fnd >=  2  Then
                               bol = True
           End If  'fnd >= 2
          If bol = True Then
                            Dim obj As String 
                            Dim std As String 
             obj = Workbooks(nameIn).Sheets(h).Range("B1").Value
             std = Workbooks(nameIn).Sheets(h).Range("B3").Value
                   If Workbooks(nameIn).Sheets(h).Range("D" & s).Value <> "" Then
                       d = CDate(Workbooks(nameIn).Sheets(h).Range("D" & s).Value)
                           Do While Workbooks(nameIn).Sheets(h).Range("A" & s +  1 ).Value = ""
                                tx = Workbooks(nameIn).Sheets(h).Range("B" & s +  1 )
                                  fin = InStr( 1 , tx, "БТП")
                                  fox = InStr( 1 , tx, "****")
                                         If (fin >  0 ) Or (fox >  0 ) Then
                                             u = s +  2 
                                             Do While Workbooks(nameIn).Sheets(h).Range("E" & u).Value <> ""
                                                 Sum = Sum + Val(Workbooks(nameIn).Sheets(h).Range("E" & u).Value)
                                                 u = u +  1 
                                            Loop
                                                 u =  0 
                                        End If                  '(fin > 0) Or (fox > 0)
                                           If fin =  0  Then
                                             u = s +  2 
                                            Do While Workbooks(nameIn).Sheets(h).Range("E" & u).Value <> ""
                                              Sum1 = Sum1 + Val(Workbooks(nameIn).Sheets(h).Range("E" & u).Value)
                                               u = u +  1 
                                            Loop
                                               u =  0 
                                           End If    'fin = 0
With ActiveWorkbook
For i = LBound(arMonth,  1 ) To UBound(arMonth,  1 ) 
For j =  0  To count -  1  
If (Month(d) = i) And (ObjectName(j +  1 ) = obj) Then
For q =  1  To countr +  1  
If (ListObject(q) = obj) And (DopStatys(q) = std) Then
If (ListObject(q) = ObjectName(j +  1 )) And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
If (StatysObject(q) = "Îñíîâíîé") And (DopStatys(q) = "äîï ñîãëàøåíèå") And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
Sheets(ActiveWorkbook.Sheets.count - i).Range("B" + CStr(j *  11  +  4 )).Value = Workbooks(nameIn).Sheets(h).Range("A" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("E" + CStr(j *  11  +  4 )).Value = Workbooks(nameIn).Sheets(h).Range("E" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("F" + CStr(j *  11  +  4 )).Value = Sum
Sheets(ActiveWorkbook.Sheets.count - i).Range("G" + CStr(j *  11  +  4 )).Value = Sum1
Exit For
End If
If ((StatysObject(q) = "Îñíîâíîé") Or (StatysObject(q) = "îñíîâíîé")) And (DopStatys(q) = "") And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
Sheets(ActiveWorkbook.Sheets.count - i).Range("B" + CStr(j *  11  +  3 )).Value = Workbooks(nameIn).Sheets(h).Range("A" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("E" + CStr(j *  11  +  3 )).Value = Workbooks(nameIn).Sheets(h).Range("E" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("F" + CStr(j *  11  +  3 )).Value = Sum
Sheets(ActiveWorkbook.Sheets.count - i).Range("G" + CStr(j *  11  +  3 )).Value = Sum1
Exit For
End If
If (StatysObject(q) = "Àâòîðñêèé") And (DopStatys(q) = "äîï ñîãëàøåíèå") And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
Sheets(ActiveWorkbook.Sheets.count - i).Range("B" + CStr(j *  11  +  6 )).Value = Workbooks(nameIn).Sheets(h).Range("A" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("E" + CStr(j *  11  +  6 )).Value = Workbooks(nameIn).Sheets(h).Range("E" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("F" + CStr(j *  11  +  6 )).Value = Sum
Sheets(ActiveWorkbook.Sheets.count - i).Range("G" + CStr(j *  11  +  6 )).Value = Sum1
Exit For
End If
If ((StatysObject(q) = "Àâòîðñêèé") Or (StatysObject(q) = "àâòîðñêèé")) And (DopStatys(q) = "") And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
Sheets(ActiveWorkbook.Sheets.count - i).Range("B" + CStr(j *  11  +  5 )).Value = Workbooks(nameIn).Sheets(h).Range("A" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("E" + CStr(j *  11  +  5 )).Value = Workbooks(nameIn).Sheets(h).Range("E" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("F" + CStr(j *  11  +  5 )).Value = Sum
Sheets(ActiveWorkbook.Sheets.count - i).Range("G" + CStr(j *  11  +  5 )).Value = Sum1
Exit For
End If
If (StatysObject(q) = "ÃÝÌ") And (DopStatys(q) = "äîï ñîãëàøåíèå") And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
Sheets(ActiveWorkbook.Sheets.count - i).Range("B" + CStr(j *  11  +  8 )).Value = Workbooks(nameIn).Sheets(h).Range("A" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("E" + CStr(j *  11  +  8 )).Value = Workbooks(nameIn).Sheets(h).Range("E" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("F" + CStr(j *  11  +  8 )).Value = Sum
Sheets(ActiveWorkbook.Sheets.count - i).Range("G" + CStr(j *  11  +  8 )).Value = Sum1
Exit For
End If
If ((StatysObject(q) = "ÃÝÌ") Or (StatysObject(q) = "ãýì")) And (DopStatys(q) = "") And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
Sheets(ActiveWorkbook.Sheets.count - i).Range("B" + CStr(j *  11  +  7 )).Value = Workbooks(nameIn).Sheets(h).Range("A" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("E" + CStr(j *  11  +  7 )).Value = Workbooks(nameIn).Sheets(h).Range("E" & s)
Sheets(ActiveWorkbook.Sheets.count - i).Range("F" + CStr(j *  11  +  7 )).Value = Sum
Sheets(ActiveWorkbook.Sheets.count - i).Range("G" + CStr(j *  11  +  7 )).Value = Sum1
Exit For
End If   
End If  '(ListObject(q) = ObjectName(j + 1)) And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") 
End If  '(ListObject(q) = obj) And (DopStatys(q) = std)
Next q
End If'(Month(d) = i) And (ObjectName(j + 1) = obj)
Next j
Next i
End With
bol = False
Sum =  0 
Sum1 =  0 
End If ' ругается на эту строчку говорит - не может найти блок ИФ
End If ' ругается на эту строчку говорит - не может найти блок ИФ
Next s
Loop 
End If
Next h

постарался более структурно :)
...
Рейтинг: 0 / 0
ограничения циклов
    #35484509
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как может быть правильно, если начинается
Код: plaintext
1.
2.
3.
For h =  1  To Workbooks(nameIn).Sheets.count
    If Workbooks(nameIn).Sheets(h).name <> "Шаблон" Then
        n1 = Workbooks(nameIn).Sheets(h).Range("B500").End(xlUp).Row
           For s =  1  To n1
а заканчивается

Код: plaintext
1.
2.
3.
Next s
Loop 
End If
Next h


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
ограничения циклов
    #35484514
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возможно примерно так

Код: 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.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
Dim fnd, n1, s As Byte
Dim q As Byte
Dim bol As Boolean

bol = False

Dim text As String
Dim d As Date
Dim tx As String
Dim fin, u, fox As Byte
Dim Sum, Sum1 As Long

Sum =  0 
Sum1 =  0 

For h =  1  To Workbooks(nameIn).Sheets.Count
    If Workbooks(nameIn).Sheets(h).Name <> "Øàáëîí" Then
        n1 = Workbooks(nameIn).Sheets(h).Range("B500").End(xlUp).Row
        For s =  1  To n1
            text = Workbooks(nameIn).Sheets(h).Range("A" & s)
            fnd = InStr( 1 , text, "-é ýòàï")
            If fnd >=  2  Then
                bol = True
            End If
            If bol = True Then
                Dim obj As String
                Dim std As String
                obj = Workbooks(nameIn).Sheets(h).Range("B1").Value
                std = Workbooks(nameIn).Sheets(h).Range("B3").Value
                If Workbooks(nameIn).Sheets(h).Range("D" & s).Value <> "" Then
                    d = CDate(Workbooks(nameIn).Sheets(h).Range("D" & s).Value)
                    Do While Workbooks(nameIn).Sheets(h).Range("A" & s +  1 ).Value = ""
                        tx = Workbooks(nameIn).Sheets(h).Range("B" & s +  1 )
                        fin = InStr( 1 , tx, "ÁÒÏ")
                        fox = InStr( 1 , tx, "****")
                        If (fin >  0 ) Or (fox >  0 ) Then
                            u = s +  2 
                            Do While Workbooks(nameIn).Sheets(h).Range("E" & u).Value <> ""
                                Sum = Sum + Val(Workbooks(nameIn).Sheets(h).Range("E" & u).Value)
                                u = u +  1 
                            Loop
                            u =  0 
                        End If
                        If fin =  0  Then
                            u = s +  2 
                            Do While Workbooks(nameIn).Sheets(h).Range("E" & u).Value <> ""
                                Sum1 = Sum1 + Val(Workbooks(nameIn).Sheets(h).Range("E" & u).Value)
                                u = u +  1 
                            Loop
                            u =  0 
                        End If
                        With ActiveWorkbook
                            For i = LBound(arMonth,  1 ) To UBound(arMonth,  1 )
                                For j =  0  To Count -  1 
                                    If (Month(d) = i) And (ObjectName(j +  1 ) = obj) Then
                                        For q =  1  To countr +  1 
                                            If (ListObject(q) = obj) And (DopStatys(q) = std) Then
                                                If (ListObject(q) = ObjectName(j +  1 )) And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
                                                    If (StatysObject(q) = "Iniiaiie") And (DopStatys(q) = "aii niaeaoaiea") And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("B" + CStr(j *  11  +  4 )).Value = Workbooks(nameIn).Sheets(h).Range("A" & s)
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("E" + CStr(j *  11  +  4 )).Value = Workbooks(nameIn).Sheets(h).Range("E" & s)
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("F" + CStr(j *  11  +  4 )).Value = Sum
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("G" + CStr(j *  11  +  4 )).Value = Sum1
                                                        Exit For
                                                    End If
                                                    If ((StatysObject(q) = "Iniiaiie") Or (StatysObject(q) = "iniiaiie")) And (DopStatys(q) = "") And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("B" + CStr(j *  11  +  3 )).Value = Workbooks(nameIn).Sheets(h).Range("A" & s)
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("E" + CStr(j *  11  +  3 )).Value = Workbooks(nameIn).Sheets(h).Range("E" & s)
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("F" + CStr(j *  11  +  3 )).Value = Sum
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("G" + CStr(j *  11  +  3 )).Value = Sum1
                                                        Exit For
                                                    End If
                                                    If (StatysObject(q) = "Aaoi?neee") And (DopStatys(q) = "aii niaeaoaiea") And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("B" + CStr(j *  11  +  6 )).Value = Workbooks(nameIn).Sheets(h).Range("A" & s)
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("E" + CStr(j *  11  +  6 )).Value = Workbooks(nameIn).Sheets(h).Range("E" & s)
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("F" + CStr(j *  11  +  6 )).Value = Sum
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("G" + CStr(j *  11  +  6 )).Value = Sum1
                                                        Exit For
                                                    End If
                                                    If ((StatysObject(q) = "Aaoi?neee") Or (StatysObject(q) = "aaoi?neee")) And (DopStatys(q) = "") And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("B" + CStr(j *  11  +  5 )).Value = Workbooks(nameIn).Sheets(h).Range("A" & s)
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("E" + CStr(j *  11  +  5 )).Value = Workbooks(nameIn).Sheets(h).Range("E" & s)
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("F" + CStr(j *  11  +  5 )).Value = Sum
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("G" + CStr(j *  11  +  5 )).Value = Sum1
                                                        Exit For
                                                    End If
                                                    If (StatysObject(q) = "AYI") And (DopStatys(q) = "aii niaeaoaiea") And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("B" + CStr(j *  11  +  8 )).Value = Workbooks(nameIn).Sheets(h).Range("A" & s)
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("E" + CStr(j *  11  +  8 )).Value = Workbooks(nameIn).Sheets(h).Range("E" & s)
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("F" + CStr(j *  11  +  8 )).Value = Sum
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("G" + CStr(j *  11  +  8 )).Value = Sum1
                                                        Exit For
                                                    End If
                                                    If ((StatysObject(q) = "AYI") Or (StatysObject(q) = "ayi")) And (DopStatys(q) = "") And (Workbooks(nameIn).Sheets(h).Range("A" & s).Value <> "") Then
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("B" + CStr(j *  11  +  7 )).Value = Workbooks(nameIn).Sheets(h).Range("A" & s)
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("E" + CStr(j *  11  +  7 )).Value = Workbooks(nameIn).Sheets(h).Range("E" & s)
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("F" + CStr(j *  11  +  7 )).Value = Sum
                                                        Sheets(ActiveWorkbook.Sheets.Count - i).Range("G" + CStr(j *  11  +  7 )).Value = Sum1
                                                        Exit For
                                                    End If
                                                End If
                                            End If
                                        Next q
                                    End If
                                Next j
                            Next i
                        End With
                        bol = False
                        Sum =  0 
                        Sum1 =  0 
                    Loop
                End If
            End If
        Next s
    End If
Next h

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
ограничения циклов
    #35484550
Фотография ДмиДми
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый Nomad87 ,
такая неотформатированность кода гарантирует возникновение ошибок.

Структурные блоки (For, If, Do etc.) необходимо выделять (при помощи табуляций) и замыкающие их директивы желательно снабжать комментариями (Next 'j, End if 'a > b etc.)

Так же гарантирует возникновение ошибок отсутствие описания переменных. Настоятельно рекомендую начинать каждый модуль директивой
Option Explicit
.
В приложении - Ваш код, отформатированный и дополненный описаниями некоторых переменных.
Некоторых, но не всех (я не телепат), так что пройти до конца трансляцию не удалось.

Успехов!
...
Рейтинг: 0 / 0
ограничения циклов
    #35484553
Фотография ДмиДми
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скрепку забыл
...
Рейтинг: 0 / 0
ограничения циклов
    #35484586
Фотография ДмиДми
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nomad87 ,
в окне VBE предусмотрено одно маленькое удобство (возможно, Вы о нём уже знаете, но на всякий случай):

над полосой вертикальной прокрутки есть (как и в окне Excel'я) маленький рубчик.
Потянув его мышкой вниз, можно резделить окно на две "форточки" (в Excel'е они названы "областями").

Очень помогает при форматировании структурных блоков, не помещающихся целиком на экране.
...
Рейтинг: 0 / 0
ограничения циклов
    #35485100
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim fnd, n1, s As Byte
......
For s = 1 To n1

У вас здесь n1 As Variant, s As Byte, а цикл все-равно их делает Integer. Осознанно работайте с типами данных. И хорошо было бы все декларации вынести наверх.

Успехов
...
Рейтинг: 0 / 0
ограничения циклов
    #35485540
Фотография ДмиДми
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConnFor s = 1 To n1
У вас здесь n1 As Variant, s As Byte, а цикл все-равно их делает Integer.Даже в случае
For v = 0.4 To 1.5 Step 0.1
?
Справка VB For counter = start To end [ Step step ]
...
counter Required. Numeric variable used as a loop counter. The variable can't be a Boolean or an array element.
...
Рейтинг: 0 / 0
ограничения циклов
    #35485909
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, ДмиДми, не в вашем примере.

А вот если n1 будет 100, то его тип станет Integer, и куда бежать с s As Byte? Далее, в теле цикла VB переменную s неявно будет делать типом Integer, а показывать как Byte, вы этого и знать не будете, и этот Byte тогда можно будет засунуть куда подальше.

:0)
...
Рейтинг: 0 / 0
ограничения циклов
    #35486389
Nomad87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ребят, спасибо огромное за ваши коментарии, я обязательно приму их к сведению ... просто сам изучал вба в течении пары недель с 0 ... ну и канеш осталось куча косяков, просто нужно закончиьт прогу ... думал, что если добавлю этот новый цикл - все будет ок, а она просто тупо вылетает ... вот эту ошибку просто не знаю даже как пробовать исправить ... может поглядите всю програмку, и вот как раз в 140 строчке этот косяк и есть ... (тот кусак который вы только что наблюдали)
заранее благодарен
пока что буду пробовать копать его сам
...
Рейтинг: 0 / 0
ограничения циклов
    #35486648
FAndrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО, вам уже все разложили по полочкам. HandKot прямо указал на ошибку.
Вы исправили этот кусок? И что получилось?
Или же вы ждете когда за вас все сделают? Как тогда вы научитесь программировать?
...
Рейтинг: 0 / 0
ограничения циклов
    #35486982
Nomad87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проблема в том что HandKot прямо указал на ошибку но не учел одной мелочи,
цикл который я добавлял -
Do While Workbooks(nameIn).Sheets(h).Range("A" & s + 1).Value = ""
loop
был добавлен для того чтобы программа считала сумму по всем предприятиям столбца
в этом цикле есть переменная s и на сколько я понимаю, если сделать так как сказал HandKot
то переменная s будет иметь одно значение и произойдет зацикливание ... вот.
если убрать этот цикл, то результатом будет только сумма только по одному предприятию в этапе, а мне соответственно нужна вся сумма по моему предприятию. как то так
извините, я не лентяй и не хочу чтоб за меня все делали, сам сутками сижу и уже голова кипит...
...
Рейтинг: 0 / 0
ограничения циклов
    #35488010
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помните, раньше: "Я Пастернака не читал, но осуждаю". Так и я: код не смотрел, но сомневаюсь. Мне почему-то кажется, что все эти циклы не обязательны. Они выглядят какими-то слишком тяжеловесными для меня. Можно ли это же сделать через SQL запросы, через встроенные формулы, наконец, (VLookup) ?

:0)
...
Рейтинг: 0 / 0
ограничения циклов
    #35488030
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно было бы, наверно, отсортировать програмно. Через Find находить строки, соответствующие разным предприятиям, эпохам и идеям, а затем прописывать в коде FormulaR1C1 с SUM внутри в границах найденных строк. И нет почти циклов, только разве лишь внутри коллекции этих всяких предприятий.

:0)
...
Рейтинг: 0 / 0
ограничения циклов
    #35488048
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может можно воспользоваться програмно опцией в меню: Data/Subtotals...
...
Рейтинг: 0 / 0
ограничения циклов
    #35488793
Nomad87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эх, VladConn, я бы с удовольствием сделал то, что вы говорите просто есть две вещи которых у меня нет,
1 - времени
2 - знаний по тому как это делать через sql или find или ещё как нибудь...
хотя главное канеш - время в понедельник все должно работать .. вот так :(
так что буду выкручиваться с тем что есть ....хм
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ограничения циклов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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