Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/236: Рейтинг темы: голосов - 236, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 15

Макросы вставки строки снизу в таблице Excel

23.12.2012, 00:31. Показов 44757. Ответов 85
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Прошу вас помочь, сам я точно не справлюсь!!

В таблице, скажем, из 4-х столбцов (A,B,C,D) необходимо добавить строку снизу. При этом по столбцу A происходит автоматическая пере-нумерация. а последняя строка Итого: не удаляется. если можно

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

Заранее благодарен!
Вложения
Тип файла: xlsx Книга1.xlsx (13.4 Кб, 294 просмотров)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.12.2012, 00:31
Ответы с готовыми решениями:

Макросы вставки строки сверху/снизу...
Здравствуйте! Прошу вас помочь, сам я точно не справлюсь!! В таблице, скажем, из 4-х столбцов (A,B,C,D) необходимо добавить...

vba Excel макросы на поиск четных и нечетных элементов в таблице
Здраствуйте,столкнулся с такой проблемой. Необходимо написать макрос в Excel , который по выделенной области ищет Четные и нечетные...

Вставка данных из Excel в ПолеТабличногоДокумента - некоторые строки после вставки объединяются
Нужно из екселя вставить данные в ПолеТабличногоДокумента, но проблема в том, что некоторые строки после вставки объединяются, т.е....

85
0 / 0 / 0
Регистрация: 12.02.2015
Сообщений: 28
17.02.2015, 16:48
Студворк — интернет-сервис помощи студентам
День добрый помогите пожалста решить :
Третья часть. “Преобразование информации, расположенной в таблице Excel, в тип данных, определенный пользователем"
Третья часть предусматривает создание в прикладном программном продукте Excel макроса, обеспечивающего обработку информации с использованием типа UDT.
В таблице Excel имеется документ «товарно-транспортная накладная». Документ содержит следующие реквизиты:
Во-первых, код поставщика. Реквизит представлен в виде символьной строки длиной в 20 символов;
Во-вторых, пункт назначения. Реквизит представлен в виде символьной строки длиной в 20 символов;
В-третьих, название товара. Реквизит представлен в виде символьной строки длиной в 20 символов;
В-четвертых, количество. Реквизит представлен в виде числа, не имеющего дробной части;
В-пятых, цена. Реквизит представлен в виде числа, имеющего дробную часть. Первая строка содержит наименование реквизитов. Начиная со второй строки, располагаются значения реквизитов. Количество заполненных строк таблицы не фиксируется.
Требуется разработать программный код, обеспечивающий расчет общей суммы по всем товарам, имеющимся в накладной. Сумма по каждому из товаров определяется как произведение количества товара на цену товара.


Начал делать в VBA :
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
Type TTN
Cod As String * 20
Pynkt As String * 20
Nazv As String * 20
Kolvo As Integer
Cena As Single
End Type
Sub SummaTTN()
LastRow = ActiveSheet.Cells.Find(What:="*", _
SearchDirection:=xlPrevious, _
SearchOrder:=xlByRows).Row
 
Dim Total
Dim Kremlin As TTN
    
    For R = 2 To LastRow
 
 
Kremlin.Kolvo = Cells(R, 4)
Kremlin.Cena = Cells(R, 5)
Total = Kremlin.Kolvo * Kremlin.Cena
        
    MsgBox ("Сумма документа: " & Total)
 
 
 
End Sub
Но выдает ошибку cannot define a public user-defined type within an object module.
P.S. Табличка во вложении
Миниатюры
Макросы вставки строки снизу в таблице Excel  
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
17.02.2015, 17:22
Ну так бейсик же уже ответил!
Словарик нужен?
1
0 / 0 / 0
Регистрация: 12.02.2015
Сообщений: 28
17.02.2015, 17:44
Цитата Сообщение от Alex77755 Посмотреть сообщение
Ну так бейсик же уже ответил!
Словарик нужен?
Я ничего не понимаю, а что я не так делаю он мне указывает на первую строку Type TTN, а исправить как не пойму.
Если не сложно подскажи как правильно еще ссылаться на ячейки в моем случае если нужна сумма ЦЕНЫ+Количества каждого товара

Добавлено через 3 минуты
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
Private Type TTN
Cod As String * 20
Pynkt As String * 20
Nazv As String * 20
Kolvo As Integer
Cena As Single
End Type
Sub SummaTTN()
 
 
Dim Total
Dim T As TTN
    With T
    .Kolvo = Cells(D2, D3, D4)
    .Cena = Cells(E2, E3, E4)
    End With
    
Total = T.Kolvo * T.Cena
        
    MsgBox ("Ñóììà äîêóìåíòà: " & Total)
 
 
 
End Sub
Теперь другую ошибку выдает Wrong number of arguments or invalid properety assimgment и указывает на строку Sub SummaTTN()

Добавлено через 6 минут
Исправил ячейки теперь это

Цитата Сообщение от Alex77755 Посмотреть сообщение
Ну так бейсик же уже ответил!
Словарик нужен?

Добавлено через 3 минуты
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
Private Type TTN
Cod As String * 20
Pynkt As String * 20
Nazv As String * 20
Kolvo As Integer
Cena As Single
End Type
Sub SummaTTN()
 
 
Dim Total
Dim T As TTN
    With T
    .Kolvo = Cells(R, 4)
    .Cena = Cells(R, 5)
    End With
    
Total = T.Kolvo * T.Cena
        
    MsgBox ("Ñóììà äîêóìåíòà: " & Total)
 
 
 
End Sub
Теперь другую ошибку выдает Application-definded or object-definded error и указывает на место после MSgbox
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
17.02.2015, 17:50
Скобки убери
1
0 / 0 / 0
Регистрация: 12.02.2015
Сообщений: 28
17.02.2015, 18:55
Спасибо, но не помогает.. Может неправильно координаты ячейки указал?

Добавлено через 8 минут
Или о каких скобах речь шла ?

Добавлено через 47 минут
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
Private Type TTN
Cod As String * 20
Pynkt As String * 20
Nazv As String * 20
Kolvo As Integer
Cena As Single
End Type
 
 
 
Sub SummaTTN()
 
Dim A As Range
Set A = Worksheets("Ëèñò1").Range("D2:D4")
Dim C As Range
Set C = Worksheets("Ëèñò1").Range("E2:E4")
 
Dim Total
Dim T As TTN
    With T
    .Kolvo = A
    .Cena = C
    End With
    
Total = T.Kolvo * T.Cena
 
        
    MsgBox ("Ñóììà äîêóìåíòà: " & Total)
 
 
End Sub
Теперь Type mismatch ... да что за фигня
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
17.02.2015, 21:23
Ну а как хотели?
Kolvo As Integer
Dim A As Range
Kolvo = A
Причём А - это не одна ячейка...
1
0 / 0 / 0
Регистрация: 12.02.2015
Сообщений: 28
17.02.2015, 21:27
Помоги исправить я уже ума не приложу, что поправить надо. Ошибку понял, но как исправить не знаю.
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
17.02.2015, 21:42
Разжуй что нужно исправить.
Если чтоб не было ошибки - сотри весь код
И вообще - лично я без файла с данными время на разбор/отладку кода обычно не трачу, есть интереснее дела...
0
0 / 0 / 0
Регистрация: 12.02.2015
Сообщений: 28
17.02.2015, 21:53
Может из-за того что таблицу создал в exel не может найти ячейку. Даже если ставлю Kolvo As Range
Dim A As Range выдаёт новую ошибку "Объектная переменная не задана (ошибка 91)"

Добавлено через 2 минуты
Я табличку прилагал как она выглядит. Там выше в сообщениях.

Добавлено через 8 минут
Hugo121, если помочь не хочешь, то и не отвечай. Все блин горазды ляпнуть пару слов и слиться, типо времени нету.. 3000 сообщений и нету времени... Что тут умный и так понятно, но недопомощь ..в чём смысл её?
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
17.02.2015, 23:21
Не, делать за тебя файл с данными нет желания. А вот код мог бы написать - если бы был файл. Но теперь уже поздно...
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
18.02.2015, 09:21
расчет общей суммы по всем товарам
Это наталкивает на мысль, что без циклов тут не обойтись
вот это надо сделать для каждого товара
Visual Basic
1
Total = T.Kolvo * T.Cena
Либо без функций листа

Добавлено через 1 минуту
Или о каких скобах речь шла
Именно о тех, строка которых вызвала ошибку! с MSGbox

Добавлено через 20 минут
как-то так:
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
Sub SummaTTN()
Dim LastRow, R
LastRow = ActiveSheet.Cells.Find(What:="*", _
SearchDirection:=xlPrevious, _
SearchOrder:=xlByRows).Row
Dim Total
Dim Tot
Dim Kremlin() As TTN
ReDim Kremlin(1 To LastRow)
    
    For R = 1 To LastRow
            Kremlin(R).Cod = Cells(R, 1)
            Kremlin(R).Pynkt = Cells(R, 2)
            Kremlin(R).Nazv = Cells(R, 3)
        If R >= 2 Then
            Kremlin(R).Kolvo = Cells(R, 4)
            Kremlin(R).Cena = Cells(R, 5)
            Total = Total + Kremlin(R).Kolvo * Kremlin(R).Cena
            Tot = Tot + Kremlin(R).Kolvo
        End If
    Next R
    MsgBox "Сумма документа: " & Total
    MsgBox "Кол-во документа: " & Tot
    MsgBox "Средняя цена документа: " & Total / Tot
End Sub
1
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
18.02.2015, 10:16
И зачем обрабатывать/городить лишнее?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub tt()
    Dim c As Range
    Dim Total
    Dim Tot
 
    For Each c In ActiveSheet.UsedRange.Columns(4).Cells
        If IsNumeric(c) Then
            Total = Total + c * c.Offset(, 1)
            Tot = Tot + c
        End If
    Next
    MsgBox "Сумма документа: " & Total
    MsgBox "Кол-во документа: " & Tot
    MsgBox "Средняя цена документа: " & Total / Tot
 
End Sub
1
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
18.02.2015, 11:15
И зачем обрабатывать/городить лишнее?
Исключительно для выполнения условия задания!
Задпние на пользовательские типы
в тип данных, определенный пользователем
1
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
18.02.2015, 11:37
Понятно что где-то в заголовке это прозвучало - но в самой задаче этот тип вообще никак не нужен, нет в нём смысла. Ну хоть придумали бы что-то поинтереснее, чтоб был интерес и смысл использовать.
Я вот например вообще в этих типах смысла не вижу и не использую - вот кто бы убедил что нужны? Проще решать без них.
1
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
18.02.2015, 12:08
Цитата Сообщение от Hugo121 Посмотреть сообщение
Проще решать без них.
Вы просто их готовит не умеете
Без них гораздо сложнее при определённых задачах. Собственные типы можно рассматривать как свойства объекта. И если таких свойств у объекта с десяток, а самих однотипных объектов сотни, то без Type решить задачу весьма сложно.
1
0 / 0 / 0
Регистрация: 12.02.2015
Сообщений: 28
18.02.2015, 14:06
Спасибо огромное всё заработало. Простите если кого обидел, злюсь на себя и систему обучения. На заочном онлайн и дают методичку в 2 стр с объяснением и список литературы.. школу когда заканчивал у нас даже информатики не было поэтому даётся всё с трудом... Единственное код не хочет работать с 12.500.000 (выдает ошибку type mismatch)с такими цифрами, но работает к примеру с 12.5.

Добавлено через 2 минуты
С Hugo121 соглашусь смысла тоже не вижу в этом типе данных в этом примере.
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
18.02.2015, 14:18
Вместо десятка свойств можно использовать десяток чисел - пусть это например номера столбцов виртуального массива. Может не так наглядно - зато код проще. А наглядность можно написать где-то один раз в комментариях.
Я пару раз спользовал эти типы - но потом аналогичные задачи делал без них, и делал проще.
0
18.02.2015, 19:06

Не по теме:

По ходу просто предусмотрено программой изучать тему...научить пользоваться
Это приблизительно как "СопроМат"!
Помните студенческое: сдал сопромат - можно жениться.
Ну сдал. Даже на "отл" и что? уже на пенсии. И хоть раз он пригодился?
Хотя 26 лет отработал механиком в шахте

0
1 / 1 / 0
Регистрация: 13.02.2017
Сообщений: 7
13.02.2017, 20:17
Всем , доброго вечера !!! Нужна помощь , создал макрос для добавления 2-х строк , в которых объеденил ячейки , при первом добавлении строк все норм но при повторно - вносится 1 строка !!! если указывать ячейку вручную тогда при добавлении опять норм. Как можно автоматом прописать что данные вносятся в 1-ую ближайшую внизу ячейку?
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
13.02.2017, 20:42
sanych_k, препишите код иначе, правильно, и всё заработает! Что ещё тут посоветуешь...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.02.2017, 20:42

Вставки в Visual Studio - макросы и генерация ошибки компиляции
Доброе утро! Я должен написать программу на ассемблере в VS для работы с битовыми строками. В ней есть макрос, выполняющий либо сброс бита...

Поменять местами строки в таблице Excel
Здравствуйте! Подскажите, пожалуйста, как можно поменят местами строки?

Макросы на копирование данных из нескольких файлов excel в один файл excel
Здравствуйте! Помогите сделать два макроса в excel, которые будут копировать данные из множества файлов excel в один файл excel. Я...

Отступы сверху и снизу от картинки в таблице
Не могу найти решения данной проблеме) отступы сверху и снизу от картинки в <td>

Просмотр записей в таблице снизу вверх
Как сделать так, то есть прописать в SQL запрос, чтобы записи в таблицы показывались снизу вверх. То есть та строка, которая была занесена...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru