Страницы: 1 2 След.
RSS
Вставка даты
 
Привет всем!  
Помогите создать функцию вставки даты. При следующих условиях.  
Есть ячейка внее в писывается символ *. При внесения этого символа в ячейку в соседней яцейки с право необходимо прописать дату (ч.м.г)на данный момент. В последствии если в ячейке с символом * убрать и поставить символ * дата в соседней ячейке не должна обновляться( т.е. если поставили символ * в ячейку дата прописалась в соседней, закрыли документ. Открыли его завтра стерли символ * поставили заново в результате этого дата не должна измениться).    
Пробовал прописывать стандартной функцией вставить дату не получается требуемый результат.  
Приоткрытии документа на следующий день дата изменяется.  
И еще если возможно то ячейка с датой блакировалась когда пропишиться дата а потом в нужный момент блакировку можно было снять.
 
{quote}{login=The_Prist}{date=06.08.2009 09:19}{thema=}{post}Включаем интеративные вычисления(2007 Excel - Меню-Параметры Excel->Формулы),в 2003 не помню.  
Предельное число интераций - 1  
в ячейку, правее ячейки с "*" вписываем такую формулу  
Это если стиль ссылок R1C1  
=ЕСЛИ(RC[-1]="*";RC;СЕГОДНЯ())
Обычный стиль  
=ЕСЛИ(A1="*";B1;СЕГОДНЯ())   -  формула в ячейке В1, "*" - в А1.  
Все, теперь обновляться данные в ячейке будут только после удаления "*".{/post}{/quote}  
Функция сегодня() простовляет мне дату на данный момент, если я открою документ завтра то дата поменяется, а этого не должно быть. Дата должна прописаться в тот момент когда я поставил символ * и полсеэтого не изменяться при любых манипуляциях(стер символ *, сново поставил, открыл документ завтра, после завртра и т. д). Значение даты должно быть оставаться таким каким оно бло на первоночальный момент вставки символа*. Я думаю стандартными функциями эту задачу не решить. Надо писать макрос, но в этом пока не силен.
 
Вас устроит макрос, который отследит состояние ячейки столба А, состояние ячейки стоблца В, и если в ячейке А появляется символ "*", а яячейка В пустая, то в ячейку В вставится текущая дата, и на следующий день она не изменится?
 
Ну прежде чем говорить о спецвставке, наверное надо спросить: чем комбинация клавиш {Ctrl+:} не устраивает? :-)
KL
 
{quote}{login=KL}{date=07.08.2009 09:10}{thema=}{post} чем комбинация клавиш {Ctrl+:} не устраивает? :-){/post}{/quote}  
Скорее всего хочется "автомат" :-)
 
{quote}{login=KL}{date=07.08.2009 09:10}{thema=}{post}Ну прежде чем говорить о спецвставке, наверное надо спросить: чем комбинация клавиш {Ctrl+:} не устраивает? :-){/post}{/quote}Для даты Вы наверно имели ввиду {Ctrl+; (точка с запятой); Ctrl+: всталяет текущее время.  
Кстати, в зависимости от локализации офиса, это может быть Ctpl+Shift+4 (в русской), Ctrl+ж (в ангилийской). А на каком-то одном у меня эти клавиши менялись вместе с языком.  
:)
 
{quote}{login=Юрий М}{date=07.08.2009 09:20}{thema=Re: }{post}{quote}{login=KL}{date=07.08.2009 09:10}{thema=}{post} чем комбинация клавиш {Ctrl+:} не устраивает? :-){/post}{/quote}  
Скорее всего хочется "автомат" :-){/post}{/quote}  
 
Вы правы хочется автоматизации.  
Мне это надо для работы. Мне дают список деталей, которые необходимо изготовить,в Exele. Изготовив детельку я помечаю что она готова. Но так как список большой то изготовление всего списка затягивается на несколько дней. А для отчетности других служб необходимо знать дату когда я изготовил ту или иную деталь. Вот они иногда интересуются когда я зделал данную деталь.  
 
Юрий М Благодарю за файл. Работает так как надо.  
И еще один моментик. Как можно отредактировать немного макрос так как уменя в документе используются другие столбцы (не А и В)какие точно сейчас сказать немогу. Я хотел бы вынуть макрос и вставить в другие мои документы.
 
Отредактировать можно. Но чтобы не возникало таких вопросов в дальнейшем, прочтите Правила.  
По вопросу. Правый клик по ярлычку листа - Исходный текст. Находим в коде выражение Range("A:A"). Меняем на нужный Вам столбец. Если напишите D:D, то "звёздочка" будет отслеживаться в столбце D, а дата будет отображаться в соседнем столбце (Е). Если Вам потребуется "отодвинуть" столбец с датой, то найдите в коде два выражения (0, 1). Единица, это количество столбцов, на которое будет смещено отображение даты относительно столбца со "звёздочкой".
 
Всем доброго здоровья и прекрасного воскресного настроения!  
Я вот почитал эту тему и подумал, а что если такую процедуру применитть для бухгалтерии. Допустим для фиксации даты и времени ввода в таблицу того или иного документа (то есть, хозяйственной операции). Но для этого нужно значок "*" в столбце А заменить, например, на текст (к примеру: названия фирмы, вид операции,ФИО работника,номер счета, или что то др. - на выбор бухгалтера) в соседней ячейке. А еще лучше, если пользователь будет иметь возможность выбора такого столбца.    
Как это сделать?  
С уважением, Gleod!
 
Как всегда начинаем с раздела "Приёмы". Ссылка:  http://www.planetaexcel.ru/tip.php?aid=28
 
Пан Юрий спасибо за подсказку!!!  
А вопрос ко всем, хто хочет помочь.  
Посколько я этот вариант видел и раньше. Но чем он меня не устраивает.  
Во-первых, эта процедура нужна главбуху для контроля за работой подопечных бухгалтеров. Естественно, что для этого придется этот столбец защитить паролем от несанкципнированых изменений. Но будет ли даный макрос работать при установке такой защиты? Сам пробовал проверить, но у меня не получается установить защиту только столбца.  
Во-вторых, нельзя ли сделать чтобы сам макрос не допускал таких изменений без спецразрешения. Потому,как Вы знаете, защита Екселя очень слабая, и малость знающий пользователь может ее легко обойти.
 
Можно защить нужные столбцы, но разрешить макросу работать по защищенным ячейкам. Эта тема обсуждалась неоднократно. Защита самого Excel действительно неважная, и с этим ничего пока не поделать.
 
{quote}{login=Юрий М}{date=09.08.2009 09:16}{thema=}{post}Отредактировать можно. Но чтобы не возникало таких вопросов в дальнейшем, прочтите Правила.  
По вопросу. Правый клик по ярлычку листа - Исходный текст. Находим в коде выражение Range("A:A"). Меняем на нужный Вам столбец. Если напишите D:D, то "звёздочка" будет отслеживаться в столбце D, а дата будет отображаться в соседнем столбце (Е). Если Вам потребуется "отодвинуть" столбец с датой, то найдите в коде два выражения (0, 1). Единица, это количество столбцов, на которое будет смещено отображение даты относительно столбца со "звёздочкой".{/post}{/quote}  
Разобраслся все работает. Юрий еще раз благодарю за помощь.
 
{quote}{login=Юрий М}{date=07.08.2009 09:20}{thema=Re: }{post}{quote}{login=KL}{date=07.08.2009 09:10}{thema=}{post} чем комбинация клавиш {Ctrl+:} не устраивает? :-){/post}{/quote}  
Скорее всего хочется "автомат" :-){/post}{/quote}скачала а файлик то пуст нельзя ли повторить    
 
мне надо поставить дату в ячейки D6:R6;D101:R101;D196:R196;D292:R292;D387:R387;D482:R482;D577:R577;D673:R673;D769:R769;D864:R864;D959:R959;D1054:R1054 без возможности её смены при условии ввода данных под датой на 88 строчек вниз данные добавляются по одной колонке в день
 
Всем Привет !!!!  
простите срезу забыла в спешке!
 
Можно ли код такого макроса? я сам уже в свой файлик всуну
 
Лиска, макрос в модуле Лист1. Попробуйте в любой ячейке столбца "А:А" поставить "*".
 
{quote}{login=Михаил}{date=26.09.2010 03:22}{thema=}{post}Лиска, макрос в модуле Лист1. Попробуйте в любой ячейке столбца "А:А" поставить "*".{/post}{/quote}  
вот я глупая, спасибо нашла!!!
 
что то у меня не получается изменить  
поскажите как    
Private Sub Worksheet_Change(ByVal Target As Range)  
  If Target.Cells.Count > 1 Then Exit Sub  
  If Not Intersect(Target, Range("D5:R94,D100:R189,D195:R284,D291:R380,D386:R475,D481:R570,D576:R665,D672:R761,D768:R857,D863:R952,D958:R1047")) Is Nothing Then я правильно записала диапазон столбцов для контроля ввод данных?  
далее мне вообще не понятно как вставить дату над контролируемым столбцом из диапазона что указан выше ну то есть например над диапазоном D5:R94 при появлении информации по столбцам под датой  
     If Target = "любое число" Then  
        If Target.Offset(0, 1) = "" Then  
           Target.Offset(0, 1) = Date  
        End If  
     End If  
  End If  
End Sub
 
что то у меня не получается изменить  
поскажите как  
Private Sub Worksheet_Change(ByVal Target As Range)  
If Target.Cells.Count > 1 Then Exit Sub  
If Not Intersect(Target, Range("D5:R94,D100:R189,D195:R284,D291:R380,D386:R475,D481:R570,D576:R665,D672:R761,D768:R857,D863:R952,D958:R1047")) Is Nothing Then    
я правильно записала диапазон столбцов для контроля ввод данных?  
 
далее мне вообще не понятно как вставить дату над контролируемым столбцом из диапазона что указан выше ну, то-есть например над диапазоном D5:R94 при появлении информации по столбцам под датой  
 
If Target = "любое число" Then  
If Target.Offset(0, 1) = "" Then  
Target.Offset(0, 1) = Date  
End If  
End If  
End If  
End Sub
 
Мальчики помогите воот ссылка на часть моего файлика <BR>Файл № 19484694 подтвержден <BR>Название: приход.xls Размер: 493 кб Доступен до: 2010-10-26 18:54:10 <BR>Ссылка для скачивания файла: http://ifolder.ru/19484694
 
Вам нужно, что бы дата ставилась в желтой строке над данными?
Я сам - дурнее всякого примера! ...
 
{quote}{login=KuklP}{date=26.09.2010 07:53}{thema=}{post}Вам нужно, что бы дата ставилась в желтой строке над данными?{/post}{/quote}  
 
да,да,да!!! и может сразу на этом примере можно сделать так, что-бы после того как введены суммы их можно было изменять только через пароль но в чистые вводить без пароля  
я уже думала что никто не отзовётся,
 
Так Вам туда полную дату(не влезет), или только день месяца?
Я сам - дурнее всякого примера! ...
 
и если можно добавить примечание в макросе напротив каждой строчки с действием!  
Буду признательна а то не всё понятно пока точнее совсем чуточку понятно!
 
{quote}{login=KuklP}{date=26.09.2010 08:05}{thema=}{post}Так Вам туда полную дату(не влезет), или только день месяца?{/post}{/quote}  
только день месяца как в примере от 1 до 31
 
В модуль листа:  
Private Sub Worksheet_Change(ByVal Target As Range)  
   Dim c As Range  
   If Target.Cells.Count > 1 Then Exit Sub  
   Application.EnableEvents = False    ' отключаем события листа  
   If Not Intersect(Target, Range("D5:R94,D100:R189,D195:R284,D291:R380,D386:R475,D481:R570,D576:R665,D672:R761,D768:R857,D863:R952,D958:R1047")) Is Nothing Then    'я правильно записала диапазон столбцов для контроля ввод данных?  
       If IsNumeric(Target) Then    ' проверяем, что введено число, если число то  
           Set c = Target    '  
           Do While c.Interior.ColorIndex <> 6    ' проверяем, каждый раз со сдвигом на ячейку вверх цвет  
               Set c = c.Offset(-1, 0)    ' если нашли желтый выходим из цикла  
           Loop  
           If c = "" Then c = Day(Date)    'если желтая ячейка пуста, втюхиваем туда дату  
           Application.EnableEvents = True    '  
       End If  
   End If  
End Sub
Я сам - дурнее всякого примера! ...
 
Исправил небольшой ляп:  
Private Sub Worksheet_Change(ByVal Target As Range)  
   Dim c As Range  
   If Target.Cells.Count > 1 Then Exit Sub  
   Application.EnableEvents = False    ' отключаем события листа  
   If Not Intersect(Target, Range("D5:R94,D100:R189,D195:R284,D291:R380,D386:R475,D481:R570,D576:R665,D672:R761,D768:R857,D863:R952,D958:R1047")) Is Nothing Then  
       If IsNumeric(Target) Then    ' проверяем, что введено число, если число то  
           Set c = Target    '  
           Do While c.Interior.ColorIndex <> 6    ' проверяем, каждый раз со сдвигом на ячейку вверх цвет  
               Set c = c.Offset(-1, 0)    ' если нашли желтый выходим из цикла  
           Loop  
           If c = "" Then c = Day(Date)    'если желтая ячейка пуста, втюхиваем туда дату  
       End If  
   End If  
   Application.EnableEvents = True    'включаем события листа  
End Sub
Я сам - дурнее всякого примера! ...
 
{quote}{login=KuklP}{date=26.09.2010 08:15}{thema=}{post}В модуль листа:  
Private Sub Worksheet_Change(ByVal Target As Range)  
   Dim c As Range  
   If Target.Cells.Count > 1 Then Exit Sub  
   Application.EnableEvents = False    ' отключаем события листа  
   If Not Intersect(Target, Range("D5:R94,D100:R189,D195:R284,D291:R380,D386:R475,D481:R570,D576:R665,D672:R761,D768:R857,D863:R952,D958:R1047")) Is Nothing Then    'я правильно записала диапазон столбцов для контроля ввод данных?  
       If IsNumeric(Target) Then    ' проверяем, что введено число, если число то  
           Set c = Target    '  
           Do While c.Interior.ColorIndex <> 6    ' проверяем, каждый раз со сдвигом на ячейку вверх цвет  
               Set c = c.Offset(-1, 0)    ' если нашли желтый выходим из цикла  
           Loop  
           If c = "" Then c = Day(Date)    'если желтая ячейка пуста, втюхиваем туда дату  
           Application.EnableEvents = True    '  
       End If  
   End If  
спасибо при спасибо
 
{quote}{login=KuklP}{date=26.09.2010 08:20}{thema=}{post}Исправил небольшой ляп:  
Private Sub Worksheet_Change(ByVal Target As Range)  
   Dim c As Range  
   If Target.Cells.Count > 1 Then Exit Sub  
   Application.EnableEvents = False    ' отключаем события листа  
   If Not Intersect(Target, Range("D5:R94,D100:R189,D195:R284,D291:R380,D386:R475,D481:R570,D576:R665,D672:R761,D768:R857,D863:R952,D958:R1047")) Is Nothing Then  
       If IsNumeric(Target) Then    ' проверяем, что введено число, если число то  
           Set c = Target    '  
           Do While c.Interior.ColorIndex <> 6    ' проверяем, каждый раз со сдвигом на ячейку вверх цвет  
               Set c = c.Offset(-1, 0)    ' если нашли желтый выходим из цикла  
           Loop  
           If c = "" Then c = Day(Date)    'если желтая ячейка пуста, втюхиваем туда дату  
       End If  
   End If  
   Application.EnableEvents = True    'включаем события листа  
End Sub{/post}{/quote}  
 
есть одна проблемка после добавления вашего макроса перестал работать макрос по очистке диапазонов при блокировке листа он захватывает только разрешённые для изменений ячейки включая жёлтый диапазон куда вставляется дата
Страницы: 1 2 След.
Читают тему
Наверх