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

Вход

Регистрация

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

 

= Мир MS Excel/Дата по двойному клику в нескольких столбцах - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Дата по двойному клику в нескольких столбцах (Макросы Sub)
Дата по двойному клику в нескольких столбцах
paninaro Дата: Среда, 19.02.2014, 11:11 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Здравствуйте, уважаемые участники форума! :)

Прошу вашей помощи, ибо в макросах я полный ноль. Нашёл в интернете макрос для автоматической вставки текущей даты в столбец по двойному клику.

1. Макрос работает только в пределах одного столбца (в моём случае - 5), а необходимо, чтобы можно было вставлять дату в несколько столбцов (допустим, в 3 разных столбца - №5, №7, №9). Я так понимаю, нужно просто добавить дополнительные условия, но когда я ввожу такую комбинацию:

[vba]
Код
If Target.Column <> 5 Or Target.Column <> 7 Or Target.Column <> 9 Then
[/vba]

макрос отказывается работать. Как поправить - ума не приложу. :(

2. В идеале хотелось бы, чтобы можно было в макросе задавать диапазон работы. Например, чтобы он работал только в обозначенных столбцах при номерах строк от 5 до 30.

Пожалуйста, помогите разобраться!
К сообщению приложен файл: date_column.xls (21.0 Kb)


Сообщение отредактировал Serge_007 - Среда, 19.02.2014, 12:29
 
Ответить
СообщениеЗдравствуйте, уважаемые участники форума! :)

Прошу вашей помощи, ибо в макросах я полный ноль. Нашёл в интернете макрос для автоматической вставки текущей даты в столбец по двойному клику.

1. Макрос работает только в пределах одного столбца (в моём случае - 5), а необходимо, чтобы можно было вставлять дату в несколько столбцов (допустим, в 3 разных столбца - №5, №7, №9). Я так понимаю, нужно просто добавить дополнительные условия, но когда я ввожу такую комбинацию:

[vba]
Код
If Target.Column <> 5 Or Target.Column <> 7 Or Target.Column <> 9 Then
[/vba]

макрос отказывается работать. Как поправить - ума не приложу. :(

2. В идеале хотелось бы, чтобы можно было в макросе задавать диапазон работы. Например, чтобы он работал только в обозначенных столбцах при номерах строк от 5 до 30.

Пожалуйста, помогите разобраться!

Автор - paninaro
Дата добавления - 19.02.2014 в 11:11
Саня Дата: Среда, 19.02.2014, 13:19 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
[vba]
Код
Target.Column <> 5 Or Target.Column <> 7 Or Target.Column <> 9
[/vba]
всегда истинно

[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     On Error GoTo ErrorEvent
     ' Только одна ячейка
     If Target.Cells.Count > 1 Then
         Exit Sub
     End If

     ' Только для пятой колонки. В остальных случаях ничего не делаем
     '    If Target.Column <> 5 Then

     Dim rngIn As Range
     Set rngIn = Range("E:E,G:G,I:I")
     MsgBox rngIn.Address
      
     Set rngIn = Range("E:I")   ' можно так
     MsgBox rngIn.Address

     ' можно так
     Set rngIn = Union(Columns(5), Columns(7), Columns(9))
     MsgBox rngIn.Address

     ' или так - "в обозначенных столбцах при номерах строк от 5 до 30"
     Set rngIn = Intersect( _
                 Union(Columns(5), Columns(7), Columns(9)), _
                 Rows("5:30") _
                 )
     MsgBox rngIn.Address
      
     ' если таргет не пересекает нашу область (т.е., не входит в нее), то выход
     If Intersect(rngIn, Target) Is Nothing Then Exit Sub
      

     ' Чтобы избежать зацикливания
     Application.EnableEvents = False
     ' Если ячейка пустая -- ставим дату
     If Target.Offset(0, 0).Value = "" Or IsNull(Target.Offset(0, 0).Value) Then
         Target.Offset(0, 0).Value = Date
         ' ==== Обратите внимание! ===========================
         ' отменяем действие двойного щелчка по-умолчанию, _
           т.е. переход в режим редактирования ячейки
         Cancel = True
         ' =========================== Обратите внимание! ====

     End If

ExitNormally:
     ' Возвращаем всё взад
     Application.EnableEvents = True
     Exit Sub
ErrorEvent:
     MsgBox Err.Description
     Resume ExitNormally
End Sub
[/vba]
 
Ответить
Сообщение[vba]
Код
Target.Column <> 5 Or Target.Column <> 7 Or Target.Column <> 9
[/vba]
всегда истинно

[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     On Error GoTo ErrorEvent
     ' Только одна ячейка
     If Target.Cells.Count > 1 Then
         Exit Sub
     End If

     ' Только для пятой колонки. В остальных случаях ничего не делаем
     '    If Target.Column <> 5 Then

     Dim rngIn As Range
     Set rngIn = Range("E:E,G:G,I:I")
     MsgBox rngIn.Address
      
     Set rngIn = Range("E:I")   ' можно так
     MsgBox rngIn.Address

     ' можно так
     Set rngIn = Union(Columns(5), Columns(7), Columns(9))
     MsgBox rngIn.Address

     ' или так - "в обозначенных столбцах при номерах строк от 5 до 30"
     Set rngIn = Intersect( _
                 Union(Columns(5), Columns(7), Columns(9)), _
                 Rows("5:30") _
                 )
     MsgBox rngIn.Address
      
     ' если таргет не пересекает нашу область (т.е., не входит в нее), то выход
     If Intersect(rngIn, Target) Is Nothing Then Exit Sub
      

     ' Чтобы избежать зацикливания
     Application.EnableEvents = False
     ' Если ячейка пустая -- ставим дату
     If Target.Offset(0, 0).Value = "" Or IsNull(Target.Offset(0, 0).Value) Then
         Target.Offset(0, 0).Value = Date
         ' ==== Обратите внимание! ===========================
         ' отменяем действие двойного щелчка по-умолчанию, _
           т.е. переход в режим редактирования ячейки
         Cancel = True
         ' =========================== Обратите внимание! ====

     End If

ExitNormally:
     ' Возвращаем всё взад
     Application.EnableEvents = True
     Exit Sub
ErrorEvent:
     MsgBox Err.Description
     Resume ExitNormally
End Sub
[/vba]

Автор - Саня
Дата добавления - 19.02.2014 в 13:19
paninaro Дата: Среда, 19.02.2014, 15:43 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
всегда истинно


При двойном клике по ячейке выскакивает сообщение с текстом ""E:E,G:G,I:I"", как его убрать? Оно совершенно не нужно.
Первый вариант макроса работает без всякого выскакивающего сообщения :(


Сообщение отредактировал paninaro - Среда, 19.02.2014, 15:44
 
Ответить
Сообщение
всегда истинно


При двойном клике по ячейке выскакивает сообщение с текстом ""E:E,G:G,I:I"", как его убрать? Оно совершенно не нужно.
Первый вариант макроса работает без всякого выскакивающего сообщения :(

Автор - paninaro
Дата добавления - 19.02.2014 в 15:43
paninaro Дата: Среда, 19.02.2014, 15:48 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Сам разобрался, достаточно было только удалить строчку с текстом "MsgBox rngIn.Address".
Благодарю вас за помощь!
 
Ответить
СообщениеСам разобрался, достаточно было только удалить строчку с текстом "MsgBox rngIn.Address".
Благодарю вас за помощь!

Автор - paninaro
Дата добавления - 19.02.2014 в 15:48
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Дата по двойному клику в нескольких столбцах (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

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