Новости:

Новая редакция правил форума: 2.4. Если вопрос или ответ содержится во вложенном файле, все-равно кратко описывайте в сообщении вопрос или суть решения. Это необходимо, чтобы тему можно было найти через поиск.

Главное меню

Удаление информации из ячейки

Автор lovko, 09.03.2014, 18:09

« назад - далее »

lovko

В книге все ячейки заблокированы, кроме Е6. Только она и выделяется при открытии книги. В эту ячейку я ввожу информацию, которая автоматически копируется на другой лист. Для этого служит следующий макрос:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim sh As Worksheet
    If Target.Address = "$E$6" Then
       Set sh = Workbooks("Книга1.xlsm").Sheets("Лист1")
       PS = sh.Range("A" & Cells.Rows.Count).End(xlUp).Row + 1
       sh.Cells(PS, 1) = Target
    End If
End Sub


Помогите, пожалуйста, дополнить этот макрос, чтобы ячейка Е6 автоматически очищалась после того, как я введу в нее информацию, нажму Enter, и эта информация скопируется в "Книгу1", "Лист1", столбец А. Большое спасибо!

Цитироватьlovko, не первый день на форуме. Оформляйте код тегом (#).

gling

Попробуйте после End If написать Range("E6")=""
mail: vovik100661@gmail.com;
ЯД-41001506838083.

Prist

Не хватает небольших шаманств:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim sh As Worksheet
    If Target.Address = "$E$6" Then
       Set sh = Workbooks("Книга1.xlsm").Sheets("Лист1")
       PS = sh.Range("A" & sh.Cells.Rows.Count).End(xlUp).Row + 1
       sh.Cells(PS, 1) = Target
       Target.Value = Empty 'это лучше, чем "". Т.к. "" - это строка нулевой длины, а Empty действительно пустая ячейка. Иногда играет роль в вычислениях
    End If
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
www.excel-vba.ru
Просто СПАСИБО [+оказать+]
Считаешь СПАСИБО мало? Яндекс.Деньги: 41001332272872; WM: R298726502453

lovko

К сожалению, оба варианта срабатывают через раз.
Если поставить Range ("E6") = "", то пишет: Method '_Default' of object 'Range' failed.
Если поставить Empty, то Method 'Value' of object 'Range' failed.
Мне кажется, что здесь есть такая зависимость. Если работать с клавишей Tab, то ошибка выскакивает реже, если делать ввод значения через Enter, - чаще.
И еще: на выполнение макроса уходит несколько секунд. Если вводить в ячейку Е6 значение в то время, когда выполняется макрос, оно будет введено после его завершения, но потом выскакивает сообщение об ошибке. Может быть, в этом есть какая-то связь?

Wasilic

Private Sub Worksheet_Change(ByVal Target As Range)
  Application.EnableEvents = False
  If Target.Address = "$E$6" Then
     Dim PS&
     PS = Sheets("Лист1").Range("A" & Rows.Count).End(xlUp).Row + 1
     Sheets("Лист1").Cells(PS, 1) = Target
     Target.Value = Empty
  End If
  Application.EnableEvents = True
End Sub
Может и я на что сгожусь ... Если сгодился, можете меня по+благодарить+.

lovko

К сожалению, не работает.

Wasilic

Цитата: lovko от 16.03.2014, 14:01
К сожалению, не работает.
Зто у кого как! :) У меня работает.
Может и я на что сгожусь ... Если сгодился, можете меня по+благодарить+.

lovko

Действительно работает. Большое вам спасибо!