Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 01.12.2014
Сообщений: 11
1

Доработать алгоритм выбора переходом на следующую строку листа Excel

02.12.2014, 12:28. Показов 2881. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! Помогите, пожалуйста, разобраться.
Мне нужно написать код для Excel, который статистические данные преобразует в информационную таблицу, при том, что исходные данные ему нужно брать с листа.
Алгоритм преобразования данных я сделала:
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
Dim procedura, primechanie, zayvki, dopuscheno2, podano2 As String, podano, dopuscheno As Integer 'вызываю переменные
primechanie = Range("y4") 'присваиваю стартовые значения
podano = Range("q4")
dopuscheno = Range("r4")
procedura = Range("P4")
    If procedura = "вскрытие конвертов" Then   'начну с варианта "вскрытие конвертов"
        If podano = 1 Then
            podano2 = "Подана "
            Else
            podano2 = "Подано "
            Select Case podano
                Case Is = 1
                zayvki = " заявка: "
                Case 2 To 4
                zayvki = " заявки: "
                Case Else
                zayvki = " заявок: "
            End Select
        End If
            Range("E4") = procedura & ". " & podano2 & podano & zayvki & primechanie & "."     'итоговая запись
    Else
        Select Case podano
            Case 2 To 4
            zayvki = " заявки,"
            Case Else
            zayvki = " заявок,"
        End Select
        If dopuscheno = 1 Then
            dopuscheno2 = " допущена"
            Else
            dopuscheno2 = " допущено"
        End If
        If primechanie = "" Then    'варианты итоговых записей
            Range("E4") = procedura & ". Подано " & podano & zayvki & dopuscheno2 & " " & dopuscheno & "."
            Else
            Range("E4") = procedura & ". Подано " & podano & zayvki & dopuscheno2 & " " & dopuscheno & " (" & primechanie & ")" & "."
        End If
    End If
А вот как заставить его перейти на следующую строку и повторить то же с новыми данными разобраться не могу (ну как "не могу" в купленной книжке есть варианты только ввода данных пользователем через InputBox).
Пробовала запустить цикл Do, а чтобы перешел на следующую строку прибавила 1 к стартовым значениям - в итоге получился бесконечный цикл в одной ячейке.
Пробовала записать стартовые данные как Range("Yi"), где i - должно было стать номером строки, но тоже вылезла какая-то ошибка.
Поискала ответа на форуме - не попался.
Вложения
Тип файла: xlsx ОДК.xlsx (14.2 Кб, 7 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2014, 12:28
Ответы с готовыми решениями:

Копирование из строки определенного листа нужные ячейки и вставить в другую книгу в следующую свободную строку
Здравствуйте. Подскажите пожалуйста, очень нужна Ваша помощь!!! У меня есть макрос, который...

Перевод курсора в Word на следующую строку, макросом из Excel
Добрый день. Имеется таблица в Ворде, макрос работает из Экселя. На закладку выходит нормально,...

Удалить 15 строку с листа 1 в Excel
Всем привет! Необходимо при нажатии на кнопку удалить 15 строку с листа1 в Excel. Как это...

Как задать соответствие одних значений, одного листа Excel, значениям другого листа Excel
Есть лист Excel ,значения в нем постоянны и находятся на одном месте (в одном столбце и в одной...

5
2785 / 717 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
02.12.2014, 15:45 2
Переключите стиль ссылок на R1C1 (Файл - Параметры - Формулы - Стиль ссылок R1C1 поставить галочку). После этого к ячейкам в макросе пропишите "координаты", то есть обращаться по номеру строки и столбца, используйте .Cells(строка, столбец) для этого.
Visual Basic
1
2
3
4
5
6
7
8
9
10
Dim i As Long
 
With ActiveSheet
    i = 4 ' Первая строка для цикла по строкам
    Do While .Cells(i, 16) <> "" ' Цикл до пустой ячейки в 16 колонке
        ' Здесь перепишите свой алгоритм, обращаясь к тексту и числам как .Cells(i, столбец)
        .Cells(i, 5) = .Cells(i, 16) ' Скопировать из 16 в 5 колонку
        i = i + 1 ' К следующей строке
    Loop
End With
Если что-то пойдет не так, выкладывайте, что получается в эту тему.
1
1 / 1 / 0
Регистрация: 01.12.2014
Сообщений: 11
02.12.2014, 16:08  [ТС] 3
Все сработало отлично и столько много переменных вызывать не нужно. Спасибо большое!
0
15 / 15 / 5
Регистрация: 01.12.2014
Сообщений: 117
02.12.2014, 16:36 4
Visual Basic
1
2
3
Do
....
Loop until <любая переменная> <> 0 ("" - если у вас строковые)
без счётчика
0
1 / 1 / 0
Регистрация: 01.12.2014
Сообщений: 11
02.12.2014, 17:41  [ТС] 5
Цитата Сообщение от сороконожка Посмотреть сообщение
Visual Basic
1
2
3
Do
....
Loop until <любая переменная> <> 0 ("" - если у вас строковые)
без счётчика
Попробовала, но без счетчика заполняется только первая ячейка
0
15 / 15 / 5
Регистрация: 01.12.2014
Сообщений: 117
03.12.2014, 17:09 6
... последними значениями. Моя ошибка, не посмотрел что вы выгружаете значения построчно.
0
03.12.2014, 17:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2014, 17:09
Помогаю со студенческими работами здесь

Скопировать строку из одного листа в другой (Excel)
Не понимаю почему работат. Worksheets('Work').Range(Cells(2, 1), Cells(2, 14)).Copy...

Как вставить диапазон в конкретную строку листа Excel со сдвигом вниз имеющихся?
Как вставить диапазон в конкретную строку листа Excel со сдвигом вниз, того что там находилось? ...

Ошибка при переходе на следующую строку при переносе значений из excel в word
Приветствую знатоки vba.. Суть проблемы есть таблица ексель с цифрами и таблица word с...

Считать данные с листа EXCEL в Listview. Выбор листа в Combobox
Как считать с листа Excel - где его имя - выбранное значение из combobox. Если я правильно понял то...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru