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

Вставить диапазон с 1-го листа на 2-ой и удалить диапазон

15.03.2016, 16:31. Показов 1567. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, всем.

Посоветуйте каким образом сделать своеобразную кнопку отмены после вставки диапазона данных.

на листе "hw" книги есть кнопка копирующая диапазон данных на лист "blank" - все работает нормально.
после переноса данных активируется лист "blank"
хочу сделать кнопку отменяющую действие -вставку данных. То есть допусти ошибочно вставил или лишний раз блок - и нажимаю на кнопку отмены /удаления и последний добавленный диапазон удаляется.

как считать последние добавленные строки на 1 листе? кол-во строк переносимого диапозона может быть разным ( так как с разных листов в лист "blank" будут добавляться разные диапазоны).

Привожу код копирующий диапазон (может что лишнего написал - буду благодарен за указание недочетов)
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 Sub CommandButton21_Click()
 
Dim q As Integer
Dim rw As Integer
Dim i As Integer
 
q = 66
While Worksheets("blank").Cells(q, 1).Value <> ""
q = q + 1
Wend
rw = q - 66
Worksheets("hw").Activate
Worksheets("hw").Range("A5: AQ18").Select
Selection.Copy
Worksheets("blank").Activate
Worksheets("blank").Cells(q, 1).Select
Worksheets("blank").Cells(q, 1).EntireRow.Insert
Worksheets("blank").Cells(q, 1).Select
ActiveSheet.Paste
i = q + 13
Worksheets("blank").Range("A" & q, "A" & i).Select
Worksheets("blank").Range("A" & q, "A" & i).RowHeight = 15
 
End Sub
Прошу снова хотя бы совета - как организовать подсчет последних добавленных строк?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.03.2016, 16:31
Ответы с готовыми решениями:

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

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

Найти диапазон который соответствует дате и данный диапазон имеет более старшую дату
Добрый день! Подскажите как лучше решить данную задачу - Задача - найти диапазон который...

Макрос для копирования данных из диапазона таблицы одного листа и вставка в диапазон таблицы другого листа
Добрый день! Прошу подсказать как написать макрос, чтобы он искал ячейку со значением &quot;февраль&quot;...

2
5612 / 1596 / 414
Регистрация: 23.12.2010
Сообщений: 2,392
Записей в блоге: 1
16.03.2016, 11:26 2
Лучший ответ Сообщение было отмечено graverman как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Public LastPasteAddress$ ' находится в стандартном модуле
 
Sub Отмена_копирования() ' находится в стандартном модуле
    If LastPasteAddress <> "" Then Worksheets("blank").Range(LastPasteAddress).Clear
End Sub
  
Private Sub CommandButton21_Click()
    Dim q%, i%
    With Worksheets("blank")
        q = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
    End With
    If q < 66 Then q = 66
    Worksheets("hw").Range("A5:AQ18").Copy Worksheets("blank").Cells(q, 1)
    i = q + 13
    LastPasteAddress = "A" & q & ":AQ" & i
    Worksheets("blank").Range("A" & q, "A" & i).Select
    Worksheets("blank").Range("A" & q, "A" & i).RowHeight = 15
End Sub
1
0 / 0 / 0
Регистрация: 12.03.2016
Сообщений: 13
16.03.2016, 18:20  [ТС] 3
Уважаемый, КоGG.

Спасибо за ответ. Как я понимаю, Вы предложили задать весь блок переменной LasPasteadress и брать из него значение для удаления последнего блока ( могу ошибаться в точности, но надеюсь не в принципе). У меня еще небольшой вопрос. Я плохо знаком с основами и не до конца правильно понял про расположение модулей сделал так :

вставить modul1 в Modules в дереве проекта, в него вписал
Public LastPasteAddress$

кнопка отмены с любого листа работает! Вставляется тоже все отлично!

Огромное спасибо!!!
0
16.03.2016, 18:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2016, 18:20
Помогаю со студенческими работами здесь

Диапазон чисел - какой диапазон у каждой переменной
все int, можете написать какой диапазон у каждой переменной типа а1= a1 = rand()%7; b1 =...

Не получается присвоить объекту Series диапазон данных с листа
Не получается присвоить объекту Series диапазон данных с листа Private Sub...

Как мне запихнуть диапазон даных с листа в vsFlexArray?
Здраствуйте! Подскажите пожалуйста. ( кто знает) :) Очень хочу приспособить у себя на форме...

Скопировать вставить диапазон
Здравствуйте. Подскажите пожалуйста почему не работает вставка. Copy работает, выбрав уже мышью...


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

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