Добрый вечер! или добрый...... Прошу макросоведов помочь написать код по вставке фиксированной даты и времени, в заданную ячейку. Вставка должна производиться по условию, например, если A1<>"", то в ячейке B1 вставка даты, в противном случае B1="". Данное правило должно работать и в остальных ячейках столбцов A и B. В дальнейшем вставленные даты не должны изменяться. Ранее я получил на форуме информацию, как этого добиться с помощью формул, только там циклическая ссылка. Это все время раздрожает.
Добрый вечер! или добрый...... Прошу макросоведов помочь написать код по вставке фиксированной даты и времени, в заданную ячейку. Вставка должна производиться по условию, например, если A1<>"", то в ячейке B1 вставка даты, в противном случае B1="". Данное правило должно работать и в остальных ячейках столбцов A и B. В дальнейшем вставленные даты не должны изменяться. Ранее я получил на форуме информацию, как этого добиться с помощью формул, только там циклическая ссылка. Это все время раздрожает.Мур
Public Sub www() Dim c As Range For Each c In ActiveSheet.UsedRange.Columns(1).Cells c(, 2) = IIf(c = "", "", Date) Next End Sub
[/vba]
или без цикла: [vba]
Код
Sub www1() ActiveSheet.UsedRange.Columns(2).Value = Date ActiveSheet.UsedRange.Columns(1).SpecialCells(xlCellTypeBlanks).Offset(, 1).ClearContents End Sub
[/vba] Только все это с помощью автофильтра делается за 3 секунды без макросов и формул.
[vba]
Код
Public Sub www() Dim c As Range For Each c In ActiveSheet.UsedRange.Columns(1).Cells c(, 2) = IIf(c = "", "", Date) Next End Sub
[/vba]
или без цикла: [vba]
Код
Sub www1() ActiveSheet.UsedRange.Columns(2).Value = Date ActiveSheet.UsedRange.Columns(1).SpecialCells(xlCellTypeBlanks).Offset(, 1).ClearContents End Sub
[/vba] Только все это с помощью автофильтра делается за 3 секунды без макросов и формул.KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Сообщение отредактировал KuklP - Вторник, 22.03.2011, 21:17
http://www.excelworld.ru/forum/2-254-1 Что автора раздражает при включенных итерациях так и не понял. И если итерации выключены, как это может работать?
Serge_007, Вам не успел ответить, kim меня опередил, это его решение было с помошью формул, наверное я его обидел. Сначала мне понравилась его формула, но потом, действительно, каждый раз при открытии файла, эти пытки с вопросами по циклическим ссылкам. Вообще, не в курсе что такое итерация, но попробую разобраться.
Serge_007, Вам не успел ответить, kim меня опередил, это его решение было с помошью формул, наверное я его обидел. Сначала мне понравилась его формула, но потом, действительно, каждый раз при открытии файла, эти пытки с вопросами по циклическим ссылкам. Вообще, не в курсе что такое итерация, но попробую разобраться.Мур
kim, приветствую. Не хотел Вас обидеть, формула нормальная, но, действительно, все время пытает меня, сохранить или нет изменения, даже если я их не вносил, а при открытии напоминает о циклицеской ссылке. Это все меня настораживает, а про итерацию я собираюсь только сейчас почитать.
kim, приветствую. Не хотел Вас обидеть, формула нормальная, но, действительно, все время пытает меня, сохранить или нет изменения, даже если я их не вносил, а при открытии напоминает о циклицеской ссылке. Это все меня настораживает, а про итерацию я собираюсь только сейчас почитать.Мур
Sub tyutyu() Dim pz As Range For Each pz In Range("A1:A100") If Len(pz) Then If Len(pz.Next) = 0 Then pz.Next = Date Else pz.Next = "" End If Next End Sub
[/vba]
Так интереснее получается [vba]
Код
Sub tyutyu() Dim pz As Range For Each pz In Range("A1:A100") If Len(pz) Then If Len(pz.Next) = 0 Then pz.Next = Date Else pz.Next = "" End If Next End Sub
Здравствуйте, KuklP и nilem. Взял ваши коды и скопировал себе, при этом у меня они работают только с ручника. Я мало в этом понимаю, так и должно быть??? Если нет, то что я делаю неправильно?
Здравствуйте, KuklP и nilem. Взял ваши коды и скопировал себе, при этом у меня они работают только с ручника. Я мало в этом понимаю, так и должно быть??? Если нет, то что я делаю неправильно?Мур
Я думал, что это должно работать так: Заполняем ячейку A1, появляется фиксированная текущая дата и время в ячейке B 1. Далее, если вносим изменения в ячейку А1, то опять вставляется обновленная текущая дата и время в ячейке B 1. Причем фиксированная в моем понимании означает, что она неизменна до следующего редактирования ячейки A1. Обработку событий (может это неправильно, подсмотрел в другой теме) тоже уже запускал Sub emergency() 'восстановить обработку событий Application.EnableEvents = True End Sub Не помогает.
Я думал, что это должно работать так: Заполняем ячейку A1, появляется фиксированная текущая дата и время в ячейке B 1. Далее, если вносим изменения в ячейку А1, то опять вставляется обновленная текущая дата и время в ячейке B 1. Причем фиксированная в моем понимании означает, что она неизменна до следующего редактирования ячейки A1. Обработку событий (может это неправильно, подсмотрел в другой теме) тоже уже запускал Sub emergency() 'восстановить обработку событий Application.EnableEvents = True End Sub Не помогает.Мур
Заполняем ячейку A1, появляется фиксированная текущая дата и время в ячейке B 1. Далее, если вносим изменения в ячейку А1, то опять вставляется обновленная текущая дата и время в ячейке B 1.
Если так, то вот кодец: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Intersect(Me.UsedRange.Columns(1), Target) Is Nothing Then Exit Sub Application.EnableEvents = False If Target = "" Then Target.Next = "" Else Target.Next = Now Application.EnableEvents = True End Sub
[/vba] Это надо вставить в модуль листа (ПКМ по ярлычку листа - Исходный текст).
Цитата (Мур)
Заполняем ячейку A1, появляется фиксированная текущая дата и время в ячейке B 1. Далее, если вносим изменения в ячейку А1, то опять вставляется обновленная текущая дата и время в ячейке B 1.
Если так, то вот кодец: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Intersect(Me.UsedRange.Columns(1), Target) Is Nothing Then Exit Sub Application.EnableEvents = False If Target = "" Then Target.Next = "" Else Target.Next = Now Application.EnableEvents = True End Sub
[/vba] Это надо вставить в модуль листа (ПКМ по ярлычку листа - Исходный текст).nilem