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

Макрос копирования таблиц нажатием кнопки

24.07.2013, 08:51. Показов 5141. Ответов 23
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, нужна помощь. Есть таблица с формулами (см. Снимок). Нужно чтоб при нажатии на кнопку (слева от таблице), создавалась такая же таблица с теми же формулами ниже (или выше) имеющейся, причем текстовые поля выделенные жирным должны сохраниться, остальные ячейки пустые. Кнопку я создал, не могу написать макрос, в результате нажатия на кнопку, должно получиться следующее (см. Снимок 2). Причем если несколько раз нажимать на кнопку, нужно чтоб таблица добавлялась на каждое нажатие. У меня excel 2010, если это важно.
Миниатюры
Макрос копирования таблиц нажатием кнопки   Макрос копирования таблиц нажатием кнопки  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.07.2013, 08:51
Ответы с готовыми решениями:

Как нажатием кнопки с помощью vba сделать резервную копию таблиц
как нажатием кнопки с помощью vba сделать резервную копию таблиц, чтоб базы данных не...

Работа с мышью: вывести квадрат нажатием левой кнопки мыши и спрятать его нажатием правой кнопки мыши
Ребят обьясните как вывести квадрат левым нажатием кнопки мыши и спрятав его правым нажатием кнопки...

Нажатием кнопки сделать текст жирным, повторным нажатием - обычным
здравствуйте. такой вопрос , как сделать, чтобы при нажатии кнопки текст печатался жирным, при...

Нужно изменить доступность кнопки в одной форме нажатием кнопки в другой
Есть две формы. В первой есть кнопка "which" с enabled = false, во второй есть кнопка, нажатие...

23
1589 / 662 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
24.07.2013, 09:37 2
Можно так ...
Миниатюры
Макрос копирования таблиц нажатием кнопки  
1
616 / 0 / 1
Регистрация: 24.07.2013
Сообщений: 93
24.07.2013, 11:02  [ТС] 3
а можешь написать относительно моей таблицы? А то я с макросами не дружу ((
0
616 / 0 / 1
Регистрация: 24.07.2013
Сообщений: 93
24.07.2013, 12:39  [ТС] 4
Step UA, тупанул немного я, спасибо, почти то что надо, есть небольшая проблемка, новая таблица добавляется не под первой, а делает отступ в 3 строки,из за этого портится внешний вид и разбивается дальше информация, вот код
Visual Basic
1
2
3
4
5
6
7
8
9
Sub dobavitj_tablicu()
    Dim Row&
    Row = Cells(1, 1).CurrentRegion.Rows.Count + 1
    [A2:G13].Copy
    Range("A" & Row & ":G" & (Row + 11)).Insert xlDown
    Range("A" & Row & ":D" & (Row + 3) & ",E" & Row & ":F" & (Row + 11) & _
        ",B" & (Row + 4) & ":D" & (Row + 5) & ",B" & (Row + 7) & ":" & "B" & _
        (Row + 8) & ",D" & (Row + 8)).ClearContents
End Sub
Результат при нажатии на кнопку на скрине, можно поправить чтоб небыло интервала в 3 строки и чтоб кнопка передвигалась вместе с таблицей вниз?
Миниатюры
Макрос копирования таблиц нажатием кнопки  
0
616 / 0 / 1
Регистрация: 24.07.2013
Сообщений: 93
24.07.2013, 12:48  [ТС] 5
починил, сделал отступ в 3 строки в таблице и все заработало ))
А можно еще добавить на против каждой таблице кнопку чтоб при нажатии можно было удалить ее?
0
1589 / 662 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
24.07.2013, 12:49 6
Смещение кнопки в строку 15 или ниже должно решить обе проблемы ... или предоставляйте таблицу
1
616 / 0 / 1
Регистрация: 24.07.2013
Сообщений: 93
24.07.2013, 13:48  [ТС] 7
решил проблему смещение кнопки под таблицу и отступ в 3 строки

теперь думаю как добавить в каждой таблице кнопку чтоб можно было удалить именно тот фрагмент рядом с которым кнопка расположена

Добавлено через 15 минут
привязал к кнопки макрос
Visual Basic
1
2
3
4
5
Sub dobavitj_tablicu2()
    Dim Row&
    Row = Cells(1, 1).CurrentRegion.Rows.Count + 1
    [A2:G13].Delete
End Sub
как сделать чтоб не первая таблица удалялась а именно та, рядом с которой кнопка, и как сделать чтоб при нажатии кнопки добавить таблицу, вместе с ней добавлялась кнопка удалить?

Добавлено через 20 минут
сделал чтоб кнопка удалить появлялась с каждой таблицей, но проблема осталась, удаляется не та таблица рядом с которой кнопка, а первая, поправьте пожалуйста код
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
24.07.2013, 14:06 8
Цитата Сообщение от Step_UA Посмотреть сообщение
или предоставляйте таблицу
- не заметили?
0
616 / 0 / 1
Регистрация: 24.07.2013
Сообщений: 93
24.07.2013, 14:20  [ТС] 9
тогда другой вопрос, наверно глупый, как сохранить таблицу с макросами? ))
создал макрос (Лист 1 - Исходный текст) в MicrosoftVisual Basic for Applications, нажимаю сохранить и мне пишет что мол "Следующие компоненты невозможно сохранить в книге без поддержки макросов ..."
Как только сохраню, сразу скину файл ))
В параметрах макросов включены все макросы
Миниатюры
Макрос копирования таблиц нажатием кнопки  
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
24.07.2013, 15:37 10
strike383, сохраните книгу в формате XLSM
или в старом формате xls (2003), если книга не содержит специфических элементов, свойственных для вер. >=2007.
0
616 / 0 / 1
Регистрация: 24.07.2013
Сообщений: 93
24.07.2013, 17:22  [ТС] 11
Цитата Сообщение от Dragokas Посмотреть сообщение
strike383, сохраните книгу в формате XLSM
или в старом формате xls (2003), если книга не содержит специфических элементов, свойственных для вер. >=2007.
У меня версия 2010, сохраняю и в .xls и в .xlsm (в ручную прописываю), всеравно это сообщение появляется и сохраняет без макрос. Причем в типе файлов у меня только Книга 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
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Range("E:E"), Target) Is Nothing Then
        If Application.Dialogs(xlDialogInsertPicture).Show Then
            With Selection
                .ShapeRange.LockAspectRatio = msoTrue
                .Height = Target.Height
                If .Width > Target.Width Then
                    .Width = Target.Width
                End If
            End With
        End If
    End If
End Sub
Sub dobavitj_tablicu()
    Dim Row&
    Row = Cells(1, 1).CurrentRegion.Rows.Count + 1
    [A2:H13].Copy
    Range("A" & Row & ":G" & (Row + 11)).Insert xlDown
    Range("A" & Row & ":D" & (Row + 3) & ",E" & Row & ":F" & (Row + 11) & _
        ",B" & (Row + 4) & ":D" & (Row + 5) & ",B" & (Row + 7) & ":" & "B" & _
        (Row + 8) & ",D" & (Row + 8)).ClearContents
End Sub
Sub udalit_tablicu()
    Dim Row&
    Row = Cells(1, 1).CurrentRegion.Rows.Count + 1
    [A2:H13].Delete
End Sub
Макросы назначаю кнопке Удалить - udalit_tablicu, и соответственнно Добавить - dobavitj_tablicu

Плюс проблему так и не решил, когда таблицу добавляю, все нормально, но когда нажимаю удалить, удаляется первая, а должна удаляться та, на против которой кнопка. Проблема конечно же в этой строчки [A2:H13].Delete , понятно что тут конкретно прописано что удалять таблицу по определенным координатам, я не знаю как прописать правельно чтоб удалялась та таблица на против которой кнопка.
Вложения
Тип файла: xlsx Книга1.xlsx (15.2 Кб, 19 просмотров)
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
24.07.2013, 20:52 12
Пришлось убить кнопки - с ними не получалось, они при копировании не меняют имена...
Вложения
Тип файла: rar Книга1(12).rar (22.5 Кб, 22 просмотров)
1
616 / 0 / 1
Регистрация: 24.07.2013
Сообщений: 93
25.07.2013, 18:03  [ТС] 13
Цитата Сообщение от Hugo121 Посмотреть сообщение
Пришлось убить кнопки - с ними не получалось, они при копировании не меняют имена...
Спасибо большое, все работает, и теперь стало появляться в типе файлов "сохранить с поддержкой макросов" ))
0
616 / 0 / 1
Регистрация: 24.07.2013
Сообщений: 93
25.07.2013, 18:59  [ТС] 14
Можете еще помочь? Вообщем таблица добавляется и удаляется без проблем нажатием кнопок, но есть несколько проблем. При нажатии на ячейку в столбце E, открывается окно вставка рисунка, когда рисунок вставлен, при нажатии кнопки копировать таблицу, она копируется с рисунком, можно сделать чтоб при копировании, ячейка E в новой таблице была пустая? Так же хотелось бы чтоб при копировании в столбце F проставлялось автоматом 1 , цена, почта, доп.упаковка 0 . Еще при удалении таблице чтоб удалялась и картинка вставленная в нее, а то таблица удаляется, картинки сдвигаются и накладывается одна на другую (которая должна быть удалена) в месте удаления. Так же хотелось бы чтоб удалялась и первая таблица при наличие других, то есть создаю 2-3 таблице нажатием кнопки, они удаляются без проблем, а первая не хочет, нужно чтоб можно было удалить любую таблицу, и первую тоже, если есть другие, а если таблица всего одна чтоб удаление не работало.
Еще почему то не могу вставить ссылку в соответствующее поле (объединены ячейки A,B,C,D 2,3,4,5) пишет что данные не совпадают по размеру и высоте, вставляется только есть прописать ее в ячейку A2 через строку формул. КОнечно было бы совсем классно еслиб ссылка с буфера обмена вставлялась автоматом при нажатии на соответствующие объединенные ячейки, без использования Ctrl + V. Сам файл я прикрепил. Заранее огромное спасибо!
Вложения
Тип файла: rar тест.rar (22.8 Кб, 58 просмотров)
0
616 / 0 / 1
Регистрация: 24.07.2013
Сообщений: 93
26.07.2013, 16:59  [ТС] 15
Никто не может помочь? Хотябы чтоб картинка вместе с таблицей удалялась можете поправить код?
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
26.07.2013, 19:10 16
Чтоб картинка:
Visual Basic
1
2
3
4
5
6
7
8
9
Sub udalit_tablicu(adr)
    For Each sh In ActiveSheet.Shapes
        If sh.TopLeftCell.Address = Cells(adr, 5).Address Then
        sh.Delete
        Exit For
        End If
    Next
    Rows(adr & ":" & adr + 11).Delete
End Sub
0
616 / 0 / 1
Регистрация: 24.07.2013
Сообщений: 93
26.07.2013, 21:21  [ТС] 17
Цитата Сообщение от Hugo121 Посмотреть сообщение
Чтоб картинка:
Visual Basic
1
2
3
4
5
6
7
8
9
Sub udalit_tablicu(adr)
    For Each sh In ActiveSheet.Shapes
        If sh.TopLeftCell.Address = Cells(adr, 5).Address Then
        sh.Delete
        Exit For
        End If
    Next
    Rows(adr & ":" & adr + 11).Delete
End Sub
не работает, копирую таблицу, вставляю картинку, таблицу удаляю а картинка остается

Добавлено через 1 минуту
тоже самое если вставляю картинку и копирую таблицу, все данные удаляются в новой таблице кроме картинки

Добавлено через 15 минут
оО, работает, но почему то 2 одни и те же картинки не удаляет, все остальные удаляет на ура, хотя все одного формата jpg

Добавлено через 7 минут
Глюк наверное какой то был.

Можешь еще поправить этот код
Visual Basic
1
2
3
4
5
6
7
8
9
Sub dobavitj_tablicu()
    Dim Row&
    Row = Cells(1, 1).CurrentRegion.Rows.Count + 1
    [A2:I13].Copy
    Range("A" & Row & ":G" & (Row + 11)).Insert xlDown
    Range("A" & Row & ":D" & (Row + 3) & ",E" & Row & ":F" & (Row + 11) & _
          ",B" & (Row + 4) & ":D" & (Row + 5) & ",B" & (Row + 7) & ":" & "B" & _
          (Row + 8) & ",D" & (Row + 8)).ClearContents
End Sub
при добавлении новой таблице все данные удаляются кроме картинки, можешь поправить код, чтоб в столбце E удалялась картинка, а так же в ячейке B9, B10, D10 не просто удалялись данные, а проставлялся 0, а в столбце F проставлялся 1

Добавлено через 4 минуты
и в этот код добавить возможность удалять самую первую таблицу в случае если их больше одной
Visual Basic
1
2
3
4
5
6
7
8
9
Sub udalit_tablicu(adr)
    For Each sh In ActiveSheet.Shapes
        If sh.TopLeftCell.Address = Cells(adr, 5).Address Then
        sh.Delete
        Exit For
        End If
    Next
    Rows(adr & ":" & adr + 11).Delete
End Sub
0
616 / 0 / 1
Регистрация: 24.07.2013
Сообщений: 93
28.07.2013, 03:04  [ТС] 18
помогите разобраться, с кодом для excel 2010,

1. При добавлении новой таблице все данные удаляются кроме картинки, можете поправить код, чтоб в столбце E удалялась картинка, а так же в ячейке B9, B10, D10 не просто удалялись данные, а проставлялся 0, а в столбце F проставлялся 1 :
Visual Basic
1
2
3
4
5
6
7
8
9
Sub dobavitj_tablicu()
    Dim Row&
    Row = Cells(1, 1).CurrentRegion.Rows.Count + 1
    [A2:I13].Copy
    Range("A" & Row & ":G" & (Row + 11)).Insert xlDown
    Range("A" & Row & ":D" & (Row + 3) & ",E" & Row & ":F" & (Row + 11) & _
          ",B" & (Row + 4) & ":D" & (Row + 5) & ",B" & (Row + 7) & ":" & "B" & _
          (Row + 8) & ",D" & (Row + 8)).ClearContents
End Sub
2. В этот код добавить возможность удалять самую первую таблицу в случае если их больше одной, сейчас первую таблицу удалить нельзя:
Visual Basic
1
2
3
4
5
6
7
8
9
Sub udalit_tablicu(adr)
    For Each sh In ActiveSheet.Shapes
        If sh.TopLeftCell.Address = Cells(adr, 5).Address Then
        sh.Delete
        Exit For
        End If
    Next
    Rows(adr & ":" & adr + 11).Delete
End Sub
Вложения
Тип файла: rar тест.rar (23.5 Кб, 17 просмотров)
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
28.07.2013, 11:32 19
В коде удаления таблицы нет никакой привязки к тому, какая таблица удаляется.
Т.е. его показывать/менять смысла нет - там прекрасно удалится любая таблица, только дай
А я не давал - потому что если дать, то юзер всё поудаляет, и что затем копировать?
Если давать удалять всё - значит нужно шаблон таблицы держать где-то в другом месте. Например на другом листе, возможно скрытом. Или же контролировать количество таблиц и не давать удалять последнюю.
В обоих случаях нужно значительно менять код. А некогда...
0
616 / 0 / 1
Регистрация: 24.07.2013
Сообщений: 93
28.07.2013, 11:46  [ТС] 20
Эта таблица только для меня, так что подскажи как сделать чтоб удалялась любая таблица?
0
28.07.2013, 11:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.07.2013, 11:46
Помогаю со студенческими работами здесь

Макрос: Написать макрос по сравнению двух таблиц для нахождения несоответствий...
знатоки, прошу помощи в еще одном деле: есть два листа, --в одном список: яблоко, груша, слива, ...

Word: макрос для таблиц. Отформатировать определенный вид таблиц
В документе два вида таблиц. Первый тип таблиц имеет вертикальную шапку сбоку (левый столбец) и...

Регистрация нажатием кнопки
Не подскажете какую-то CMS, в которой есть опция автоматической регистрации юзера? То есть, юзер...

Проблема с нажатием на кнопки
Здравствуйте, верстал интерфейс для крестиков-ноликов и столкнулся со странной проблемой на которую...


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

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