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

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

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

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

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

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

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

Заранее благодарен!
Вложения
Тип файла: xlsx Книга1.xlsx (13.4 Кб, 294 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2012, 00:31
Ответы с готовыми решениями:

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

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

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

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

85
0 / 0 / 0
Регистрация: 12.02.2015
Сообщений: 28
17.02.2015, 16:48 41
Author24 — интернет-сервис помощи студентам
День добрый помогите пожалста решить :
Третья часть. “Преобразование информации, расположенной в таблице 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
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
17.02.2015, 17:22 42
Ну так бейсик же уже ответил!
Словарик нужен?
1
0 / 0 / 0
Регистрация: 12.02.2015
Сообщений: 28
17.02.2015, 17:44 43
Цитата Сообщение от 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
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
17.02.2015, 17:50 44
Скобки убери
1
0 / 0 / 0
Регистрация: 12.02.2015
Сообщений: 28
17.02.2015, 18:55 45
Спасибо, но не помогает.. Может неправильно координаты ячейки указал?

Добавлено через 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
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
17.02.2015, 21:23 46
Ну а как хотели?
Kolvo As Integer
Dim A As Range
Kolvo = A
Причём А - это не одна ячейка...
1
0 / 0 / 0
Регистрация: 12.02.2015
Сообщений: 28
17.02.2015, 21:27 47
Помоги исправить я уже ума не приложу, что поправить надо. Ошибку понял, но как исправить не знаю.
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
17.02.2015, 21:42 48
Разжуй что нужно исправить.
Если чтоб не было ошибки - сотри весь код
И вообще - лично я без файла с данными время на разбор/отладку кода обычно не трачу, есть интереснее дела...
0
0 / 0 / 0
Регистрация: 12.02.2015
Сообщений: 28
17.02.2015, 21:53 49
Может из-за того что таблицу создал в exel не может найти ячейку. Даже если ставлю Kolvo As Range
Dim A As Range выдаёт новую ошибку "Объектная переменная не задана (ошибка 91)"

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

Добавлено через 8 минут
Hugo121, если помочь не хочешь, то и не отвечай. Все блин горазды ляпнуть пару слов и слиться, типо времени нету.. 3000 сообщений и нету времени... Что тут умный и так понятно, но недопомощь ..в чём смысл её?
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
17.02.2015, 23:21 50
Не, делать за тебя файл с данными нет желания. А вот код мог бы написать - если бы был файл. Но теперь уже поздно...
0
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
18.02.2015, 09:21 51
расчет общей суммы по всем товарам
Это наталкивает на мысль, что без циклов тут не обойтись
вот это надо сделать для каждого товара
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
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
18.02.2015, 10:16 52
И зачем обрабатывать/городить лишнее?
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
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
18.02.2015, 11:15 53
И зачем обрабатывать/городить лишнее?
Исключительно для выполнения условия задания!
Задпние на пользовательские типы
в тип данных, определенный пользователем
1
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
18.02.2015, 11:37 54
Понятно что где-то в заголовке это прозвучало - но в самой задаче этот тип вообще никак не нужен, нет в нём смысла. Ну хоть придумали бы что-то поинтереснее, чтоб был интерес и смысл использовать.
Я вот например вообще в этих типах смысла не вижу и не использую - вот кто бы убедил что нужны? Проще решать без них.
1
6804 / 2831 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
18.02.2015, 12:08 55
Цитата Сообщение от Hugo121 Посмотреть сообщение
Проще решать без них.
Вы просто их готовит не умеете
Без них гораздо сложнее при определённых задачах. Собственные типы можно рассматривать как свойства объекта. И если таких свойств у объекта с десяток, а самих однотипных объектов сотни, то без Type решить задачу весьма сложно.
1
0 / 0 / 0
Регистрация: 12.02.2015
Сообщений: 28
18.02.2015, 14:06 56
Спасибо огромное всё заработало. Простите если кого обидел, злюсь на себя и систему обучения. На заочном онлайн и дают методичку в 2 стр с объяснением и список литературы.. школу когда заканчивал у нас даже информатики не было поэтому даётся всё с трудом... Единственное код не хочет работать с 12.500.000 (выдает ошибку type mismatch)с такими цифрами, но работает к примеру с 12.5.

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

Не по теме:

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

0
1 / 1 / 0
Регистрация: 13.02.2017
Сообщений: 7
13.02.2017, 20:17 59
Всем , доброго вечера !!! Нужна помощь , создал макрос для добавления 2-х строк , в которых объеденил ячейки , при первом добавлении строк все норм но при повторно - вносится 1 строка !!! если указывать ячейку вручную тогда при добавлении опять норм. Как можно автоматом прописать что данные вносятся в 1-ую ближайшую внизу ячейку?
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
13.02.2017, 20:42 60
sanych_k, препишите код иначе, правильно, и всё заработает! Что ещё тут посоветуешь...
0
13.02.2017, 20:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2017, 20:42
Помогаю со студенческими работами здесь

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

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

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

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


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

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