Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
5 / 5 / 4
Регистрация: 01.11.2009
Сообщений: 576

На каждой итерации цикла поместить значения 30 ячеек столбца A в массив

02.03.2016, 10:15. Показов 2014. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Подскажите по логике как написать: есть 90 строк с данными (могут начинаться с любой строки, не обязательно с 1, но и со 2, 3 и т.д.), нужно выполнить 3 итерации цикла, на каждой итерации поместить значения 30 ячеек столбца A в массив: т.е на 1 итерации копируем ячейки 1 - 30, на второй - 31-60, на 3-й копируем 61-90.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.03.2016, 10:15
Ответы с готовыми решениями:

Создать динамический массив, собирающий значения переменной на каждой итерации цикла
#include <iostream> #include <ctime> #include <conio.h> #include <clocale> using namespace std; int main() { int t, i, ...

Вывод значения на каждой итерации цикла
Есть код: $url = htmlspecialchars($_POST); $result = mysql_query('SELECT column_name FROM table_name'); $n =...

Как проверять, нажата ли клавиша Esc, в каждой итерации цикла, и если нажата, то прервать выполнение цикла?
OwenGlendower, это обращение прежде всего к вам. Вызов функции, в которой происходит проверка методом...

22
5 / 5 / 4
Регистрация: 01.11.2009
Сообщений: 576
25.03.2016, 12:52  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Vlad999 Посмотреть сообщение
Application.CutCopyMode = False 'снимаем выделение после копирования
в каком месте это вставить?

Добавлено через 7 минут
...тогда весь лист выделен, ошибка пристутствует

Добавлено через 55 минут
Вставил первой строкой в процедуре - буфер не очищается..
HELP!!!

Добавлено через 14 секунд
Вставил первой строкой в процедуре - буфер не очищается..
HELP!!!
0
5 / 5 / 4
Регистрация: 01.11.2009
Сообщений: 576
25.03.2016, 13:38  [ТС]
Вот сам файл...
Вложения
Тип файла: zip Generator_call_list.zip (381.7 Кб, 4 просмотров)
0
5 / 5 / 4
Регистрация: 01.11.2009
Сообщений: 576
29.03.2016, 09:51  [ТС]
help!

Добавлено через 8 часов 41 минуту
Ошибка (при втором запуске) возникает при попытке снять автофильтр, который не установлен
решение:
Visual Basic
1
if Worksheets(RCVNAME).AutoFiltermode=TRUE then Worksheets(RCVNAME).AutoFiltermode=FALSE
Добавлено через 20 часов 1 минуту
Цитата Сообщение от Vlad999 Посмотреть сообщение
п.с. избавтесь от не нужных селектов
это я поправил, только если применяю другой фильтр, т.е. warrantor и BMB, то к нужному мне количеству строк добавляется еще первая строка листа, на котором установлены фильтры, т.е. BIK, а она мне счас не нужна, но нужна в том случае, если фильтр по bik, bak.
Подскажите как поправить?
...у меня несколько однотипных процедур с разными фильтрами только...
Вот последний код:
Кликните здесь для просмотра всего текста
Visual Basic
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
Sub BMB()
           
'   Отключаем моргание экрана при выполнении
    Application.ScreenUpdating = False
    
'   снимаем автофильтр только если он включен
    If Worksheets(RCVNAME).AutoFilterMode = True Then Worksheets(RCVNAME).AutoFilterMode = False
 
    Application.DisplayAlerts = False
'   Очищаем буфер обмена
    Application.CutCopyMode = False
    
'   Получаем имя листа
    RCVNAME = Worksheets("Макрос").Range("E2").Value
 
'   Определяем имя
    Dim Type_reestr
    Type_reestr = "BMB"
 
    Dim lLastRow
    Dim lLastCol
 
'   Последняя строка
    lLastRow = Worksheets(RCVNAME).UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
    '   Последний стобец
    lLastCol = Worksheets(RCVNAME).UsedRange.Column + ActiveSheet.UsedRange.Columns.Count - 1
 
'   Фильтруем данные
    Worksheets(RCVNAME).Cells(1, 1).Resize(lLastRow, lLastCol).AutoFilter Field:=17, Criteria1:="<>WARRANTOR"
    Worksheets(RCVNAME).Cells(1, 1).Cells(lLastRow, lLastCol).AutoFilter Field:=5, Criteria1:="=BMB"
 
 
'   Создаем каталог
        Dim folder
        Dim folder2
        Dim FilePath
        FilePath = Type_reestr
 
'   Определяем путь\имя каталога
        folder = ThisWorkbook.Path & "" & FilePath
 
'   Если нет такого каталога, то создаем.
        If CreateObject("Scripting.FileSystemObject").FolderExists(folder) = True Then
             Else
                MkDir folder
        End If
        
'   Добавляем новый лист и вставляем на него скопированные данные
        Sheets.Add(, Sheets(Sheets.Count)).Name = Type_reestr
'   Выбираем отфильтрованные столбцы
        Worksheets(RCVNAME).Range("AS:AS,AW:AW,AX:AX,AY:AY,E:E,G:G,I:I").Copy Worksheets(Type_reestr).Cells(1, 1)
      
'   Количество строк
 
                Dim Count_str As Integer
                Dim Count_str_v_it As Integer
 '   Получаем количество реестров из ячейки
                Dim Count_reestr As Integer
                Count_reestr = Worksheets("Макрос").Range("G17").Value
 
                Count_str = Application.WorksheetFunction.CountIfs(Sheets(Type_reestr).Range("A:A"), "<>")
                Count_str_v_it = Fix((Count_str / Count_reestr)) + 1 ' fix, отбрасывает дробную часть, + 1 - когда не целое число получается
           
                Dim D_end As Integer
                D_end = Count_str_v_it * Count_reestr
 
                    Dim n1
                    n1 = 1
                    Dim i
 
                    For i = n1 To D_end Step Count_str_v_it
                                Worksheets(Type_reestr).Range(Worksheets(Type_reestr).Cells(i, 1), _
                                Worksheets(Type_reestr).Cells(i + Count_str_v_it - 1, 7)).Copy
                               
                                Sheets.Add(, Sheets(Sheets.Count)).Name = Type_reestr & i
                                Worksheets(Type_reestr & i).Paste
        
    
                            '    Подготавливаем данные для генерации файла
                                            Dim Arr
                                            Dim Headers
                                            Arr = Worksheets(Type_reestr & i).Range("A1:G" & D_end).Value
                                            Headers = Array("Тип", "DPD", "Регион", "ID клиента", "Имя", "Отчество", "Фамилия", "Код ручного обзвона")
                            
                                            SaveArray Arr, Headers, folder, "Реестр" & i ' создаём из массива Arr файл Excel с именем СКЛАД
                            '    Отключаем уведомления
                                        Application.DisplayAlerts = False
                            '    Удаляем листы
                                        Worksheets(Type_reestr & i).Delete
    
                      Next
'    Удаляем листы
'    Worksheets(Type_reestr).Delete
    Worksheets("Макрос").Activate
            
'   Очищаем буфер обмена
    Application.CutCopyMode = False
    MsgBox ("Формирование завершено")
              
End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.03.2016, 09:51

Изменение формата ячеек происходит только на первой итерации цикла
Вообще начал только делать некий аналог Домашней Бухгалтерии. Пользователю предлагается ввести количество и имена членов семьи, после...

AJAX вывод на каждой итерации цикла
Есть такой вот код: &lt;?php include('config.php'); $query = mysql_query(&quot;SELECT title FROM joomla&quot;); $n =...

Поиск среднего арифметического на каждой итерации цикла
Задача состоит в том, чтобы находить среднее арифметическое значение на каждом шаге цикла. Конечное количество значений неизвестно, но...

Будет ли происходить обращение к БД на каждой итерации цикла
foreach (var fa in Get()) { } Вот сам по себе цикл, где Get() - медот который обращается к баз данных и...

Вывод результата при каждой итерации цикла
Получилось так, но возможно ли сделать через for? /*#include &lt;iostream&gt; using namespace std; int main() { int i=0,s=0; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru