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

Вход

Регистрация

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

 

= Мир MS Excel/Автоматическое проставление текущей даты при вводе определен - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Автоматическое проставление текущей даты при вводе определен
_Вячеслав_ Дата: Четверг, 26.11.2015, 15:40 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Подскажите есть текст макроса:

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)

For Each cell In Target 'проходим по всем измененным ячейкам
If Not Intersect(cell, Range("A2:A100")) Is Nothing Then 'если изменененная ячейка попадает в диапазон A2:A100
With cell.Offset(0, 1) 'вводим в соседнюю справа ячейку дату
.Value = Now
.EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
End With
End If
Next cell
End Sub
[/vba]

который при ЛЮБОМ изменении в ячейках столбца А вносит текущую дату и время в столбец В. Подскажите как изменить данный текст, что бы дата и время проставлялись только при вводе определенного текста, а при вводе любого другого или удаления вообще текста ячейка В оставалась пустой. Допустим это будет "время"
[moder]Используйте для оформления кода кнопку #.
Поправила[/moder]


Сообщение отредактировал Manyasha - Четверг, 26.11.2015, 15:45
 
Ответить
СообщениеДобрый день.
Подскажите есть текст макроса:

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)

For Each cell In Target 'проходим по всем измененным ячейкам
If Not Intersect(cell, Range("A2:A100")) Is Nothing Then 'если изменененная ячейка попадает в диапазон A2:A100
With cell.Offset(0, 1) 'вводим в соседнюю справа ячейку дату
.Value = Now
.EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
End With
End If
Next cell
End Sub
[/vba]

который при ЛЮБОМ изменении в ячейках столбца А вносит текущую дату и время в столбец В. Подскажите как изменить данный текст, что бы дата и время проставлялись только при вводе определенного текста, а при вводе любого другого или удаления вообще текста ячейка В оставалась пустой. Допустим это будет "время"
[moder]Используйте для оформления кода кнопку #.
Поправила[/moder]

Автор - _Вячеслав_
Дата добавления - 26.11.2015 в 15:40
SLAVICK Дата: Четверг, 26.11.2015, 15:49 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Вот:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target 'проходим по всем измененным ячейкам
If Not Intersect(cell, Range("A2:A100")) Is Nothing Then 'если изменененная ячейка попадает в диапазон A2:A100
    If cell.Value = "время" Then
        With cell.Offset(0, 1) 'вводим в соседнюю справа ячейку дату
        .Value = Now
        .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
        End With
    End If
End If
Next cell
End Sub
[/vba]


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеВот:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target 'проходим по всем измененным ячейкам
If Not Intersect(cell, Range("A2:A100")) Is Nothing Then 'если изменененная ячейка попадает в диапазон A2:A100
    If cell.Value = "время" Then
        With cell.Offset(0, 1) 'вводим в соседнюю справа ячейку дату
        .Value = Now
        .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
        End With
    End If
End If
Next cell
End Sub
[/vba]

Автор - SLAVICK
Дата добавления - 26.11.2015 в 15:49
Manyasha Дата: Четверг, 26.11.2015, 15:49 | Сообщение № 3
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
так?
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    For Each cell In Target 'проходим по всем измененным ячейкам
        If Not Intersect(cell, Range("A2:A100")) Is Nothing Then 'если изменененная ячейка попадает в диапазон A2:A100
            With cell.Offset(0, 1) 'вводим в соседнюю справа ячейку дату
                If cell.Value = "время" Then
                    .Value = Now
                    .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
                Else
                    .Value = ""
                End If
            End With
        End If
    Next cell
End Sub
[/vba]


ЯД: 410013299366744 WM: R193491431804

Сообщение отредактировал Manyasha - Четверг, 26.11.2015, 15:50
 
Ответить
Сообщениетак?
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    For Each cell In Target 'проходим по всем измененным ячейкам
        If Not Intersect(cell, Range("A2:A100")) Is Nothing Then 'если изменененная ячейка попадает в диапазон A2:A100
            With cell.Offset(0, 1) 'вводим в соседнюю справа ячейку дату
                If cell.Value = "время" Then
                    .Value = Now
                    .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
                Else
                    .Value = ""
                End If
            End With
        End If
    Next cell
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 26.11.2015 в 15:49
_Boroda_ Дата: Четверг, 26.11.2015, 15:51 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16881
Репутация: 6593 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Так нужно?
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    For Each cell In Target 'проходим по всем измененным ячейкам
        If Not Intersect(cell, Range("A2:A100")) Is Nothing Then 'если изменененная ячейка попадает в диапазон A2:A100
            cell.ClearContents
            If cell = "время" Then
                With cell.Offset(0, 1) 'вводим в соседнюю справа ячейку дату
                    .Value = Now
                    .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
                End With
            End If
        End If
    Next cell
End Sub
[/vba]

Прикольно - 3 одинаковых кода. Почти одинаковых. Я в свой дописал еще (потом) cell.ClearContents


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    For Each cell In Target 'проходим по всем измененным ячейкам
        If Not Intersect(cell, Range("A2:A100")) Is Nothing Then 'если изменененная ячейка попадает в диапазон A2:A100
            cell.ClearContents
            If cell = "время" Then
                With cell.Offset(0, 1) 'вводим в соседнюю справа ячейку дату
                    .Value = Now
                    .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
                End With
            End If
        End If
    Next cell
End Sub
[/vba]

Прикольно - 3 одинаковых кода. Почти одинаковых. Я в свой дописал еще (потом) cell.ClearContents

Автор - _Boroda_
Дата добавления - 26.11.2015 в 15:51
_Вячеслав_ Дата: Четверг, 26.11.2015, 16:16 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо за оперативный ответ.
 
Ответить
СообщениеСпасибо за оперативный ответ.

Автор - _Вячеслав_
Дата добавления - 26.11.2015 в 16:16
_Вячеслав_ Дата: Четверг, 26.11.2015, 16:19 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
А вот, что в итоге получилось у меня
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target 'проходим по всем измененным ячейкам
If Not Intersect(cell, Range("E2:E1000000")) Is Nothing Then 'если изменененная ячейка попадает в диапазон E2:E1000000
    If cell.Value = "В работе" Then
        With cell.Offset(0, -1) 'вводим в ячейку слева дату
        .Value = Now
        .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
        End With
    End If
End If
If Not Intersect(cell, Range("E2:E1000000")) Is Nothing Then 'если изменененная ячейка попадает в диапазон E2:E1000000
    If cell.Value = "Выполнен" Then
        With cell.Offset(0, 4) 'вводим справа в 4-ю ячейку дату
        .Value = Now
        .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
        End With
    End If
End If
Next cell
End Sub
[/vba]

При вводе текста "В работе" добавляется дата в одну ячейку, а при изменении текста на "Выполнен" дата и время проставляется в другую


Сообщение отредактировал _Вячеслав_ - Четверг, 26.11.2015, 16:23
 
Ответить
СообщениеА вот, что в итоге получилось у меня
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target 'проходим по всем измененным ячейкам
If Not Intersect(cell, Range("E2:E1000000")) Is Nothing Then 'если изменененная ячейка попадает в диапазон E2:E1000000
    If cell.Value = "В работе" Then
        With cell.Offset(0, -1) 'вводим в ячейку слева дату
        .Value = Now
        .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
        End With
    End If
End If
If Not Intersect(cell, Range("E2:E1000000")) Is Nothing Then 'если изменененная ячейка попадает в диапазон E2:E1000000
    If cell.Value = "Выполнен" Then
        With cell.Offset(0, 4) 'вводим справа в 4-ю ячейку дату
        .Value = Now
        .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
        End With
    End If
End If
Next cell
End Sub
[/vba]

При вводе текста "В работе" добавляется дата в одну ячейку, а при изменении текста на "Выполнен" дата и время проставляется в другую

Автор - _Вячеслав_
Дата добавления - 26.11.2015 в 16:19
  • Страница 1 из 1
  • 1
Поиск:

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