powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Срочный вопрос!
6 сообщений из 6, страница 1 из 1
Срочный вопрос!
    #36745394
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.
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.
dt = InputBox("Введите дату в формате дд.мм.гггг", "Ввод даты", Format(Date, "dd.mm.yyyy"))

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

Sql = " select"
Sql = Sql & " c.msisdn, s.navi_date, ss.def, s.end_date"
Sql = Sql & " from subs_packs s, client_balance c, serv_histories sh, serv_statuses ss"
Sql = Sql & " where s.pack_pack_id in (789,855)"
Sql = Sql & " and s.navi_date > to_date('" & dt & "', 'dd.mm.yyyy')"
Sql = Sql & " and s.navi_user = 'SYS'"
Sql = Sql & " and sh.srst_srst_id = ss.srst_id"
Sql = Sql & " and s.subs_subs_id = c.subs_subs_id"
Sql = Sql & " and sh.subs_subs_id = c.subs_subs_id"
Sql = Sql & " and sh.srls_srls_id = " 1020 "
Sql = Sql & " and sh.end_date > sysdate"
Sql = Sql & " order by s.end_date"

rsgs_gprs.Open Sql, con
Sheets("Лист1").Select

Dim i As Long

For i = 3 To ActiveSheet.Rows.Count

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

Range(Cells( 3 ,  2 ), Cells(i,  5 )).Select
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlMedium
    End With
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlCenter
        .ReadingOrder = xlContext
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .ReadingOrder = xlContext
    End With

Cells(i,  2 ).CopyFromRecordset rsgs_gprs

rsgs_gprs.Close

Exit For
End If
Next i
Так вот он вытаскивает множество строк. Все нормально, только вот выделение Range(Cells(3, 2), Cells(i, 5)).Select выделяет только одну первую строку. Хотя там стоит до (i, 5). Почему не выделяются остальные строки? И еще не подскажите как можно делать очищение сторок перед следующим запуском?
...
Рейтинг: 0 / 0
Срочный вопрос!
    #36745426
fortik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если i=3 то выделяет 1 строку (проверьте значение i)
range().СlearСontents- очищает данные
...
Рейтинг: 0 / 0
Срочный вопрос!
    #36745453
fortik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hum_i,
Sql = Sql & " and sh.srls_srls_id = "1020"
тут мало кавычек
Sql = Sql & " and sh.srls_srls_id = ""1020"""
...
Рейтинг: 0 / 0
Срочный вопрос!
    #36749475
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да вы правы. i=3, и поэтому выделяется только первая строка. Подскажите пожалуйста как тогда организовать это в цикле, чтобы выделялись все строки?
...
Рейтинг: 0 / 0
Срочный вопрос!
    #36749533
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hum_i,

если отвечать на Ваш вопрос то:
все сразу это
Код: plaintext
rows("10:15").select
пошагово
Код: plaintext
rows(i & ":" & i).select
аналогичный Вашему вариант (с учетом ширины строки, иными словами диапазон), но пошагово
Код: plaintext
Range(Cells(i,  2 ), Cells(i,  5 )).Select
а вообще у Вас код верный, просто вы цикл по пустому листу организовываете "автопробег".
проблема в алгоритме. Вы сделайте так от начала рекордсета до конца проделывайте одну и ту же функцию

примерно так
Код: 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.
dt = InputBox("Введите дату в формате дд.мм.гггг", "Ввод даты", Format(Date, "dd.mm.yyyy"))

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

Sql = " select"
..... и прочие строки Вашего SQL запроса

rsgs_gprs.Open Sql, con
Sheets( 1 ).Select

k= 3   ' стартовая строка
Do While Not rsgs_gprs.EOF  'цикл по рекордсету до его завершения
    For I =  0  To rsgs_gprs.Fields.Count  'считаем количество элементов на маркере
         Cells(k, i+ 2 )= rsgs_gprs.Fields(I) ' заносим в ячейку все филды маркера (иными словами 
                                                       'значения строки рекордсета)
    Next I

Range (Cells(k,  2 ), Cells(k, rsgs_gprs.Fields.Count)).Select  '  выделяем то, что вывели
'.... а тут вставляете свое красивое выделение из кучи строк, я бы на Вашем месте создал процедуру 
'куда это все вынес, и тут бы написал что то типа call OFORMLENIYE  

k=k+ 1  ' смещаем строку вывода значение вниз
rsgs_gprs.MoveNext ' смещаем маркер вниз по рекордсету на одну строку
Loop

' тут код закрытия и т.п.
...
Рейтинг: 0 / 0
Срочный вопрос!
    #36749541
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл таки добавить

ваш код заработает если перенести строку
Код: plaintext
Cells(i,  2 ).CopyFromRecordset rsgs_gprs
сразу после
Код: plaintext
Dim i As Long
только исправьте её на
Код: plaintext
Cells( 3 ,  2 ).CopyFromRecordset rsgs_gprs
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Срочный вопрос!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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