powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Срочный вопрос!
16 сообщений из 16, страница 1 из 1
Срочный вопрос!
    #36641656
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день! Подскажите пожалуйста вот есть такая функция ActiveSheet.Columns.Count т.е. до последнего столбца активной ячейки. А вот если мне нужно наоборот до последней строки, как это сделать?

Код: 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.
Dim w As Integer
Dim i As Integer
For i =  2  To ActiveSheet.Columns.Count
If Cells( 3 , i).Value = "" Then
         w = i
Range(Cells( 1 ,  2 ), Cells( 1 ,  2 )).Select
Selection.ClearContents
         
Range(Cells( 3 ,  2 ), Cells( 50 ,  10 )).Select
Selection.ClearContents

Cells( 1 , i).Value = "За период с " + dt_start + " по " + dt_end

Dim rsgs_gprs As ADODB.Recordset:         Set rsgs_gprs = New ADODB.Recordset
Set rsgs_gprs.ActiveConnection = con

Sql = " select"
Sql = Sql & " t.day,"
Sql = Sql & " t.count,"
Sql = Sql & " t.traffic_mb,"
Sql = Sql & " t.traffic_mb_packets,"
Sql = Sql & " t.traffic_mb_itogo,"
Sql = Sql & " t.vyruchka_usd,"
Sql = Sql & " t.vyruchka_usd_raz_to,"
Sql = Sql & " t.vyruchka_usd_period_to,"
Sql = Sql & " t.viruchka_usd_itogo"
Sql = Sql & " from general_statistic t"
Sql = Sql & " where t.day >= to_date('" & dt_start & "', 'dd.mm.yyyy')"
Sql = Sql & " and t.day < to_date('" & dt_end & "', 'dd.mm.yyyy')+1-1/86400"
Sql = Sql & " order by t.day"

rsgs_gprs.Open Sql, con
Sheets("Общая статистика GPRS").Select
Cells( 3 , i).CopyFromRecordset rsgs_gprs
rsgs_gprs.Close

Exit For
End If
Next i 
...
Рейтинг: 0 / 0
Срочный вопрос!
    #36642042
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hum_iActiveSheet.Columns.Count т.е. до последнего столбца активной ячейки
Не понимаю, как Вы это себе представляете - "до последнего столбца активной ячейки"?
ActiveSheet.Columns.Count - кол-во столбцов, содержащихся в активном листе (Application.Columns.Count вернёт то же значение).

Аналогичный подсчёт строк - ActiveSheet.Rows.Count
Только при чём здесь представленный код?
...
Рейтинг: 0 / 0
Срочный вопрос!
    #36644884
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так и пробовала. Но при выполнении дает ошибку: Run-time error '6'; Overflow

Код: 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.
Dim w As Integer
Dim i As Integer
For i =  4  To ActiveSheet.Rows.Count
If Cells(i,  3 ).Value = "" Then
         w = i
Dim rsgs_gprs As ADODB.Recordset:         Set rsgs_gprs = New ADODB.Recordset
Set rsgs_gprs.ActiveConnection = con

Sql = " select"
Sql = Sql & " t.day,"
Sql = Sql & " t.count,"
Sql = Sql & " t.traffic_mb,"
Sql = Sql & " t.vyruchka_usd,"
Sql = Sql & " from general_statistiс t"
Sql = Sql & " where t.day >= to_date('" & dt_start & "', 'dd.mm.yyyy')"
Sql = Sql & " and t.day < to_date('" & dt_end & "', 'dd.mm.yyyy')+1-1/86400"
Sql = Sql & " order by t.day"

rsgs_gprs.Open Sql, con
Sheets("Общая статистика GPRS").Select
Cells(i,  3 ).Value = rsgs_gprs.Fields( 1 ).Value
rsgs_gprs.Close

Exit For
End If
Next i

Что означает эта ошибка?
...
Рейтинг: 0 / 0
Срочный вопрос!
    #36644954
nilem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hum_i,

Dim i As Integer
For i = 4 To ActiveSheet.Rows.Count
Переменная объявлена как Integer (макс. знач-е 32 с чем-то тыс.), а строк на листе 65536, поэтому и ошибка. Объявите как Long.
...
Рейтинг: 0 / 0
Срочный вопрос!
    #36645071
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Только вот у меня еще вопрос такой, какой бы я период не задавала, он вытаскивает только одну первую строку, почему?
...
Рейтинг: 0 / 0
Срочный вопрос!
    #36645102
nilem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hum_i,

В соответствии с кодом, как мне кажется:
если Cells(i, 3) пустая, то ...
If Cells(i, 3).Value = "" Then
...........
... присваиваем ей какое-то значение ...
Cells(i, 3).Value = rsgs_gprs.Fields(1).Value
... и сразу выходим из цикла
Exit For
Т.е. получаем одну строку.
...
Рейтинг: 0 / 0
Срочный вопрос!
    #36645293
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну так сначала я одну строку вытаскиваю в цикле
Код: 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.
Dim i As Long
For i =  3  To ActiveSheet.Rows.Count
If Cells(i,  2 ).Value = "" Then
       
Range(Cells( 1 ,  2 ), Cells( 1 ,  2 )).Select
Selection.ClearContents
         
Range(Cells( 3 ,  2 ), Cells(i,  10 )).Select
Selection.ClearContents

Cells( 1 ,  2 ).Value = "За период с " + dt_start + " по " + dt_end

Dim rsgs_gprs As ADODB.Recordset:         Set rsgs_gprs = New ADODB.Recordset
Set rsgs_gprs.ActiveConnection = con

Sql = " select"
Sql = Sql & " t.day,"
Sql = Sql & " t.count_unikalnie,"
Sql = Sql & " t.traffic_mb_1,"
Sql = Sql & " t.traffic_mb_2,"
Sql = Sql & " t.traffic_mb_packets,"
Sql = Sql & " t.traffic_mb_itogo,"
Sql = Sql & " t.vyruchka_usd_1,"
Sql = Sql & " t.vyruchka_usd_2,"
Sql = Sql & " t.vyruchka_usd_raz_to,"
Sql = Sql & " t.vyruchka_usd_period_to,"
Sql = Sql & " t.viruchka_usd_itogo"
Sql = Sql & " from general_statistic t"
Sql = Sql & " where t.day >= to_date('" & dt_start & "', 'dd.mm.yyyy')"
Sql = Sql & " and t.day < to_date('" & dt_end & "', 'dd.mm.yyyy')+1-1/86400"
Sql = Sql & " order by t.day"

rsgs_gprs.Open Sql, con
Sheets("Общая статистика GPRS").Select
Cells(i,  2 ).Value = rsgs_gprs.Fields( 0 ).Value
Cells(i,  3 ).Value = rsgs_gprs.Fields( 1 ).Value
Cells(i,  4 ).Value = rsgs_gprs.Fields( 2 ).Value
Cells(i,  5 ).Value = rsgs_gprs.Fields( 3 ).Value
Cells(i,  6 ).Value = rsgs_gprs.Fields( 4 ).Value
Cells(i,  7 ).Value = rsgs_gprs.Fields( 5 ).Value
Cells(i,  8 ).Value = rsgs_gprs.Fields( 6 ).Value
Cells(i,  9 ).Value = rsgs_gprs.Fields( 7 ).Value
Cells(i,  10 ).Value = rsgs_gprs.Fields( 8 ).Value
Cells(i,  11 ).Value = rsgs_gprs.Fields( 9 ).Value
Cells(i,  12 ).Value = rsgs_gprs.Fields( 10 ).Value
rsgs_gprs.Close

Exit For
End If
Next i
End Sub

вытаскиваю сначала первую строку, потом Next i должна же следующая вытаскиваться
...
Рейтинг: 0 / 0
Срочный вопрос!
    #36645332
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hum_i,
Вы в цикле каждый раз создаёте новую выборку и заносите из неё на лист первую строку.

(Посмотрите выше: в этом варианте Вы убрали Cells(3, i).CopyFromRecordset rsgs_gprs)
...
Рейтинг: 0 / 0
Срочный вопрос!
    #36645347
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы переносить содержимое выборки на лист в цикле, по одной записи, нужно этот цикл организовать:
Код: plaintext
1.
2.
3.
Do Until rsgs_gprs.EOF
   '...
  rsgs_gprs.MoveNext
Loop
...
Рейтинг: 0 / 0
Срочный вопрос!
    #36645360
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlthhum_i,
Вы в цикле каждый раз создаёте новую выборку и заносите из неё на лист первую строку.
Виноват, не заметил Exit For.
Значит, после извлечения на лист первой записи, выполнение цикла прерывается.
Но это сути не меняет: вторую запись Вы не получите, даже убрав Exit For.
...
Рейтинг: 0 / 0
Срочный вопрос!
    #36653070
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я поняла с for не получится правильно организовать цикл, чтобы он вытаскивал строку за строкой. Вот я попробовала
Код: plaintext
1.
2.
3.
Do Until rsgs_gprs.EOF
   '...
  rsgs_gprs.MoveNext
Loop

Код: 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.
Dim i As Long
i =  3 
Do Until rsgs_gprs.EOF
  
If Cells(i,  2 ).Value = "" Then
        
Cells( 1 ,  2 ).Value = "За период с " + dt_start + " по " + dt_end

Sql = " select"
Sql = Sql & " t.day,"
Sql = Sql & " t.count_unikalnie,"
Sql = Sql & " t.traffic_mb_1,"
Sql = Sql & " t.traffic_mb_2,"
Sql = Sql & " t.traffic_mb_packets,"
Sql = Sql & " t.traffic_mb_itogo,"
Sql = Sql & " t.vyruchka_usd_1,"
Sql = Sql & " t.vyruchka_usd_2,"
Sql = Sql & " t.vyruchka_usd_raz_to,"
Sql = Sql & " t.vyruchka_usd_period_to,"
Sql = Sql & " t.viruchka_usd_itogo"
Sql = Sql & " from general_statistiс"
Sql = Sql & " where t.day >= to_date('" & dt_start & "', 'dd.mm.yyyy')"
Sql = Sql & " and t.day < to_date('" & dt_end & "', 'dd.mm.yyyy')+1"
Sql = Sql & " order by t.day"

rsgs_gprs.Open Sql, con
Sheets("Общая статистика GPRS").Select
Cells(i,  2 ).Value = rsgs_gprs.Fields( 0 ).Value
Cells(i,  3 ).Value = rsgs_gprs.Fields( 1 ).Value
Cells(i,  4 ).Value = rsgs_gprs.Fields( 2 ).Value
Cells(i,  5 ).Value = rsgs_gprs.Fields( 3 ).Value
Cells(i,  6 ).Value = rsgs_gprs.Fields( 4 ).Value
Cells(i,  7 ).Value = rsgs_gprs.Fields( 5 ).Value
Cells(i,  8 ).Value = rsgs_gprs.Fields( 6 ).Value
Cells(i,  9 ).Value = rsgs_gprs.Fields( 7 ).Value
Cells(i,  10 ).Value = rsgs_gprs.Fields( 8 ).Value
Cells(i,  11 ).Value = rsgs_gprs.Fields( 9 ).Value
Cells(i,  12 ).Value = rsgs_gprs.Fields( 10 ).Value

rsgs_gprs.MoveNext
Loop

rsgs_gprs.Close

Ну что то не получается, ошибку дает: loop without Do. Подскажите как правильно, пожалуйста?
...
Рейтинг: 0 / 0
Срочный вопрос!
    #36653140
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hum_i,

Ошибка возникает из-за этой строки:
Код: plaintext
1.
If Cells(i,  2 ).Value = "" Then
...
Рейтинг: 0 / 0
Срочный вопрос!
    #36653144
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точнее, из-за отсутствия
Код: plaintext
End If
...
Рейтинг: 0 / 0
Срочный вопрос!
    #36653161
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А теперь дает ошибку Операция не допускается, если объект закрыт. И ссылается на этот объект
Код: plaintext
Do Until rsgs_gprs.EOF
...
Рейтинг: 0 / 0
Срочный вопрос!
    #36653170
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hum_i, строку
Код: plaintext
1.
Cells( 1 ,  2 ).Value = "За период с " + dt_start + " по " + dt_end
, наверное, нужно вынести из цикла?
...
Рейтинг: 0 / 0
Срочный вопрос!
    #36653184
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hum_iА теперь дает ошибку Операция не допускается, если объект закрыт. И ссылается на этот объект
Код: plaintext
Do Until rsgs_gprs.EOF

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


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