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

Вход

Регистрация

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

 

= Мир MS Excel/автоматическая простановка даты при внесении данных - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » автоматическая простановка даты при внесении данных (Макросы/Sub)
автоматическая простановка даты при внесении данных
gredd Дата: Понедельник, 14.03.2016, 14:20 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте! Помогите, пожалуйста доработать код.
Необходимо, чтобы при заполнении ячеек столбца B, в столбце А автоматически проставлялась дата. При этом дата не должна меняться. У меня получилось следующее
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo A
    If Not Intersect(Target, [b2:b100]) Is Nothing Then
    Target.Offset(, -1) = Now
    With Target.Offset(, -1).Resize(, 2).Validation
        .Delete
        .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=A3<>A3"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = "                       Не менять"
        .InputMessage = ""
        .ErrorMessage = "Изменение даты не возможно!"
        .ShowInput = True
        .ShowError = True
    End With
    End If
A: Exit Sub
End Sub
[/vba]
Проблема в том, что первые строки столбцов A и B являются заголовками таблицы, необходимо,чтобы код начинал срабатывать, начиная со второй строчки. В моём варианте получается, что макрос срабатывает, во всём диапазоне столбцов A и B. Знающие люди, подскажите пожалуйста, в чём проблема? Изучаю VBA не давно, опыта нет ещё :(
К сообщению приложен файл: 7704547.xls(36Kb)


Сообщение отредактировал gredd - Понедельник, 14.03.2016, 15:16
 
Ответить
СообщениеЗдравствуйте! Помогите, пожалуйста доработать код.
Необходимо, чтобы при заполнении ячеек столбца B, в столбце А автоматически проставлялась дата. При этом дата не должна меняться. У меня получилось следующее
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo A
    If Not Intersect(Target, [b2:b100]) Is Nothing Then
    Target.Offset(, -1) = Now
    With Target.Offset(, -1).Resize(, 2).Validation
        .Delete
        .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=A3<>A3"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = "                       Не менять"
        .InputMessage = ""
        .ErrorMessage = "Изменение даты не возможно!"
        .ShowInput = True
        .ShowError = True
    End With
    End If
A: Exit Sub
End Sub
[/vba]
Проблема в том, что первые строки столбцов A и B являются заголовками таблицы, необходимо,чтобы код начинал срабатывать, начиная со второй строчки. В моём варианте получается, что макрос срабатывает, во всём диапазоне столбцов A и B. Знающие люди, подскажите пожалуйста, в чём проблема? Изучаю VBA не давно, опыта нет ещё :(

Автор - gredd
Дата добавления - 14.03.2016 в 14:20
Udik Дата: Понедельник, 14.03.2016, 14:33 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1219
Репутация: 153 ±
Замечаний: 0% ±

Excel 2013
Как только исправите замечания, так и ответим :) .


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеКак только исправите замечания, так и ответим :) .

Автор - Udik
Дата добавления - 14.03.2016 в 14:33
Karataev Дата: Понедельник, 14.03.2016, 16:28 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 643
Репутация: 227 ±
Замечаний: 0% ±

Excel
gredd, макрос срабатывает при любом изменении на листе Лист1, но обработка происходит, только если изменение произошло в B2:B100.
Я не обнаружил проблемы, о которой Вы пишите.


 
Ответить
Сообщениеgredd, макрос срабатывает при любом изменении на листе Лист1, но обработка происходит, только если изменение произошло в B2:B100.
Я не обнаружил проблемы, о которой Вы пишите.

Автор - Karataev
Дата добавления - 14.03.2016 в 16:28
gredd Дата: Понедельник, 14.03.2016, 18:03 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Karataev, проблема в том, что необходимо, чтобы дата не менялась и посторонний пользователь не мог бы её вообще никак изменить. Мне нужно в первой строке столбца А прописать название таблицы, а макрос не даёт этого сделать( И дата меняется при изменении значений в столбце B. Подскажите как это исправить, пожалуйста :(
 
Ответить
СообщениеKarataev, проблема в том, что необходимо, чтобы дата не менялась и посторонний пользователь не мог бы её вообще никак изменить. Мне нужно в первой строке столбца А прописать название таблицы, а макрос не даёт этого сделать( И дата меняется при изменении значений в столбце B. Подскажите как это исправить, пожалуйста :(

Автор - gredd
Дата добавления - 14.03.2016 в 18:03
Karataev Дата: Понедельник, 14.03.2016, 18:08 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 643
Репутация: 227 ±
Замечаний: 0% ±

Excel
Мне нужно в первой строке столбца А прописать название таблицы, а макрос не даёт этого сделать(

Я использую файл и макрос из поста 1. У меня получается записать заголовок в A1. "Непонятки" какие-то.


 
Ответить
Сообщение
Мне нужно в первой строке столбца А прописать название таблицы, а макрос не даёт этого сделать(

Я использую файл и макрос из поста 1. У меня получается записать заголовок в A1. "Непонятки" какие-то.

Автор - Karataev
Дата добавления - 14.03.2016 в 18:08
gredd Дата: Понедельник, 14.03.2016, 18:13 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Karataev, У меня ещё и дата меняется при изменении значений в B, а нужно чтобы она не менялась(
 
Ответить
СообщениеKarataev, У меня ещё и дата меняется при изменении значений в B, а нужно чтобы она не менялась(

Автор - gredd
Дата добавления - 14.03.2016 в 18:13
Karataev Дата: Понедельник, 14.03.2016, 18:18 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 643
Репутация: 227 ±
Замечаний: 0% ±

Excel
Я до даты еще не дочитал, я дочитал до этого:
Мне нужно в первой строке столбца А прописать название таблицы, а макрос не даёт этого сделать(


 
Ответить
СообщениеЯ до даты еще не дочитал, я дочитал до этого:
Мне нужно в первой строке столбца А прописать название таблицы, а макрос не даёт этого сделать(

Автор - Karataev
Дата добавления - 14.03.2016 в 18:18
_Boroda_ Дата: Понедельник, 14.03.2016, 18:19 | Сообщение № 8
Группа: Модераторы
Ранг: Экселист
Сообщений: 9377
Репутация: 3950 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А вот так если? Кстати, работает и для множественного одновременного ввода (или через Контрл Ентер, или через вставку)
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [B2:B100]) Is Nothing Then
        n_ = Intersect(Target, [B2:B100]).Cells.Count
        Application.EnableEvents = 0
        For i = 1 To n_
            If Intersect(Target, [B2:B100])(i).Offset(, -1) = "" Then
                Intersect(Target, [B2:B100])(i).Offset(, -1) = Now
            End If
        Next i
        Intersect(Target, [B2:B100]).Offset(, -1).NumberFormat = "dd/mm/yy h:mm"
        Application.EnableEvents = 1
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, [A2:A100]) Is Nothing Then
        Target(1).Offset(, 1).Select
    End If
End Sub
[/vba]
К сообщению приложен файл: 7704547_1.xls(40Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА вот так если? Кстати, работает и для множественного одновременного ввода (или через Контрл Ентер, или через вставку)
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [B2:B100]) Is Nothing Then
        n_ = Intersect(Target, [B2:B100]).Cells.Count
        Application.EnableEvents = 0
        For i = 1 To n_
            If Intersect(Target, [B2:B100])(i).Offset(, -1) = "" Then
                Intersect(Target, [B2:B100])(i).Offset(, -1) = Now
            End If
        Next i
        Intersect(Target, [B2:B100]).Offset(, -1).NumberFormat = "dd/mm/yy h:mm"
        Application.EnableEvents = 1
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, [A2:A100]) Is Nothing Then
        Target(1).Offset(, 1).Select
    End If
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 14.03.2016 в 18:19
Udik Дата: Понедельник, 14.03.2016, 18:22 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1219
Репутация: 153 ±
Замечаний: 0% ±

Excel 2013
Вам надо эвенты отключать перед внесением изменений, чтобы лишний раз не вызывать макрос. А перед выходом включать обратно.
==
Борода уже вписал :) .


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Понедельник, 14.03.2016, 18:23
 
Ответить
СообщениеВам надо эвенты отключать перед внесением изменений, чтобы лишний раз не вызывать макрос. А перед выходом включать обратно.
==
Борода уже вписал :) .

Автор - Udik
Дата добавления - 14.03.2016 в 18:22
gredd Дата: Понедельник, 14.03.2016, 18:29 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, Спасибо Вам огромное)) Буду разбираться дальше hands
 
Ответить
Сообщение_Boroda_, Спасибо Вам огромное)) Буду разбираться дальше hands

Автор - gredd
Дата добавления - 14.03.2016 в 18:29
Мир MS Excel » Вопросы и решения » Вопросы по VBA » автоматическая простановка даты при внесении данных (Макросы/Sub)
Страница 1 из 11
Поиск:

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