Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Очистка ячеек и UNDO - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Очистка ячеек и UNDO (Макросы/Sub)
Очистка ячеек и UNDO
koyaanisqatsi Дата: Четверг, 29.12.2016, 15:28 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте.

Хочу прилепить кнопку которая бы очищала ячейки от данных. Но в таком случае мне нежна опция UNDO вернуть все назад если результат не понравился.

По записи макроса получилось вот так:

[vba]
Код
Sub Макрос1()
'
' Макрос1 Макрос
'
' Сочетание клавиш: Ctrl+l
'
    Range("D7:D28").Select
    Selection.ClearContents
End Sub
[/vba]

Undo записать никак не получается (
К сообщению приложен файл: 6377795.xlsm (14.8 Kb)
 
Ответить
СообщениеЗдравствуйте.

Хочу прилепить кнопку которая бы очищала ячейки от данных. Но в таком случае мне нежна опция UNDO вернуть все назад если результат не понравился.

По записи макроса получилось вот так:

[vba]
Код
Sub Макрос1()
'
' Макрос1 Макрос
'
' Сочетание клавиш: Ctrl+l
'
    Range("D7:D28").Select
    Selection.ClearContents
End Sub
[/vba]

Undo записать никак не получается (

Автор - koyaanisqatsi
Дата добавления - 29.12.2016 в 15:28
nilem Дата: Четверг, 29.12.2016, 15:38 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
koyaanisqatsi, привет
попробуйте вот так:
[vba]
Код
Option Explicit
Dim arr

Sub Макрос1()
With Range("D7:D28")
    arr = .Value
    .ClearContents
End With
End Sub

Sub UnМакрос1()    'типа Undo
If IsArray(arr) Then
    Range("D7:D28").Value = arr
Else
    MsgBox "Поздняк метаться :)", 64
End If
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеkoyaanisqatsi, привет
попробуйте вот так:
[vba]
Код
Option Explicit
Dim arr

Sub Макрос1()
With Range("D7:D28")
    arr = .Value
    .ClearContents
End With
End Sub

Sub UnМакрос1()    'типа Undo
If IsArray(arr) Then
    Range("D7:D28").Value = arr
Else
    MsgBox "Поздняк метаться :)", 64
End If
End Sub
[/vba]

Автор - nilem
Дата добавления - 29.12.2016 в 15:38
koyaanisqatsi Дата: Четверг, 29.12.2016, 15:54 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
nilem, Спасибо. работает. Жаль только это два макроса. Но можно и так конечно если в один не пихнуть.
 
Ответить
Сообщениеnilem, Спасибо. работает. Жаль только это два макроса. Но можно и так конечно если в один не пихнуть.

Автор - koyaanisqatsi
Дата добавления - 29.12.2016 в 15:54
koyaanisqatsi Дата: Четверг, 29.12.2016, 16:45 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
nilem,

Когда пытаюсь размножить то один то другой зависает на этой строке

[vba]
Код
Sub UnМакрос2()    'типа Undo
[/vba]
К сообщению приложен файл: 1229808.xlsm (17.4 Kb)


Сообщение отредактировал koyaanisqatsi - Четверг, 29.12.2016, 16:45
 
Ответить
Сообщениеnilem,

Когда пытаюсь размножить то один то другой зависает на этой строке

[vba]
Код
Sub UnМакрос2()    'типа Undo
[/vba]

Автор - koyaanisqatsi
Дата добавления - 29.12.2016 в 16:45
Kuzmich Дата: Четверг, 29.12.2016, 17:13 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
[vba]
Код
Option Explicit
Dim arr
[/vba]
Надо писать только один раз, уберите лишние
 
Ответить
Сообщение[vba]
Код
Option Explicit
Dim arr
[/vba]
Надо писать только один раз, уберите лишние

Автор - Kuzmich
Дата добавления - 29.12.2016 в 17:13
koyaanisqatsi Дата: Четверг, 29.12.2016, 17:17 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
Kuzmich, Вот теперь все ок) Спасибо
 
Ответить
СообщениеKuzmich, Вот теперь все ок) Спасибо

Автор - koyaanisqatsi
Дата добавления - 29.12.2016 в 17:17
Kuzmich Дата: Четверг, 29.12.2016, 17:42 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Цитата
Вот теперь все ок

Если удалить один диапазон, а кнопку Undo нажать в другом, то будет ошибка возврата.
Я бы использовал в вашем случае три разных массива
 
Ответить
Сообщение
Цитата
Вот теперь все ок

Если удалить один диапазон, а кнопку Undo нажать в другом, то будет ошибка возврата.
Я бы использовал в вашем случае три разных массива

Автор - Kuzmich
Дата добавления - 29.12.2016 в 17:42
koyaanisqatsi Дата: Четверг, 29.12.2016, 17:43 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

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

Нежелательный эффект (((
 
Ответить
СообщениеОднако, Если таких столбцов много. И случайно нажел вернуть тот столбец который не удалял этим макросом то с этот столбец скопируется тот который удалял макросом (

Нежелательный эффект (((

Автор - koyaanisqatsi
Дата добавления - 29.12.2016 в 17:43
Kuzmich Дата: Четверг, 29.12.2016, 17:46 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Цитата
Нежелательный эффект

Попробуйте три массива, измените в макросах циферки у arr
[vba]
Код
Option Explicit
Dim arr
Dim arr1
Dim arr2
[/vba]
 
Ответить
Сообщение
Цитата
Нежелательный эффект

Попробуйте три массива, измените в макросах циферки у arr
[vba]
Код
Option Explicit
Dim arr
Dim arr1
Dim arr2
[/vba]

Автор - Kuzmich
Дата добавления - 29.12.2016 в 17:46
koyaanisqatsi Дата: Четверг, 29.12.2016, 17:55 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
Kuzmich, Так мы же все "Димы" только что удалили (
Я попробовал под каждым макросом сначала дописать с разными цыферками ошибка как и изначально при клонировании
Добавил как вы показали в примере после "Option Explicit" Но не помогло (

 
Ответить
СообщениеKuzmich, Так мы же все "Димы" только что удалили (
Я попробовал под каждым макросом сначала дописать с разными цыферками ошибка как и изначально при клонировании
Добавил как вы показали в примере после "Option Explicit" Но не помогло (


Автор - koyaanisqatsi
Дата добавления - 29.12.2016 в 17:55
Kuzmich Дата: Четверг, 29.12.2016, 18:03 | Сообщение № 11
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Я не так имел в виду.
[vba]
Код
Option Explicit
Dim arr
Dim arr1
Dim arr2
Sub Макрос1()
With Range("D7:D28")
    arr = .Value
    .ClearContents
End With
End Sub

Sub UnМакрос1()    'типа Undo
If IsArray(arr) Then
    Range("D7:D28").Value = arr
Else
    MsgBox "Поздняк метаться :)", 64
End If
End Sub

Sub Макрос2()
With Range("g7:g28")
    arr1 = .Value
    .ClearContents
End With
End Sub

Sub UnМакрос2()    'типа Undo
If IsArray(arr1) Then
    Range("g7:g28").Value = arr1
Else
    MsgBox "Поздняк метаться :)", 64
End If
End Sub

Sub Макрос3()
With Range("i7:i28")
    arr2 = .Value
    .ClearContents
End With
End Sub

Sub UnМакрос3()    'типа Undo
If IsArray(arr2) Then
    Range("i7:i28").Value = arr2
Else
    MsgBox "Поздняк метаться :)", 64
End If
End Sub
[/vba]
 
Ответить
СообщениеЯ не так имел в виду.
[vba]
Код
Option Explicit
Dim arr
Dim arr1
Dim arr2
Sub Макрос1()
With Range("D7:D28")
    arr = .Value
    .ClearContents
End With
End Sub

Sub UnМакрос1()    'типа Undo
If IsArray(arr) Then
    Range("D7:D28").Value = arr
Else
    MsgBox "Поздняк метаться :)", 64
End If
End Sub

Sub Макрос2()
With Range("g7:g28")
    arr1 = .Value
    .ClearContents
End With
End Sub

Sub UnМакрос2()    'типа Undo
If IsArray(arr1) Then
    Range("g7:g28").Value = arr1
Else
    MsgBox "Поздняк метаться :)", 64
End If
End Sub

Sub Макрос3()
With Range("i7:i28")
    arr2 = .Value
    .ClearContents
End With
End Sub

Sub UnМакрос3()    'типа Undo
If IsArray(arr2) Then
    Range("i7:i28").Value = arr2
Else
    MsgBox "Поздняк метаться :)", 64
End If
End Sub
[/vba]

Автор - Kuzmich
Дата добавления - 29.12.2016 в 18:03
koyaanisqatsi Дата: Четверг, 29.12.2016, 18:08 | Сообщение № 12
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
Kuzmich, А так все равно этот негативный эффект остается (
 
Ответить
СообщениеKuzmich, А так все равно этот негативный эффект остается (

Автор - koyaanisqatsi
Дата добавления - 29.12.2016 в 18:08
Kuzmich Дата: Четверг, 29.12.2016, 18:16 | Сообщение № 13
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Цитата
негативный эффект остается

А, если перезагрузить файл ?
 
Ответить
Сообщение
Цитата
негативный эффект остается

А, если перезагрузить файл ?

Автор - Kuzmich
Дата добавления - 29.12.2016 в 18:16
koyaanisqatsi Дата: Четверг, 29.12.2016, 18:20 | Сообщение № 14
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
Kuzmich, Не помогло (
 
Ответить
СообщениеKuzmich, Не помогло (

Автор - koyaanisqatsi
Дата добавления - 29.12.2016 в 18:20
Kuzmich Дата: Четверг, 29.12.2016, 18:32 | Сообщение № 15
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Посмотрите в файле
К сообщению приложен файл: Undo.xls (51.0 Kb)
 
Ответить
СообщениеПосмотрите в файле

Автор - Kuzmich
Дата добавления - 29.12.2016 в 18:32
koyaanisqatsi Дата: Четверг, 29.12.2016, 18:36 | Сообщение № 16
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
Kuzmich, Семен Семеныч )))) Ну да АРР я и не заметил (во втором случае) ТАДАМ !
Спасибо огромное )
 
Ответить
СообщениеKuzmich, Семен Семеныч )))) Ну да АРР я и не заметил (во втором случае) ТАДАМ !
Спасибо огромное )

Автор - koyaanisqatsi
Дата добавления - 29.12.2016 в 18:36
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Очистка ячеек и UNDO (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!