в теме "замена запятой на точку при вводе" (имелось в виду ввод даты) )http://www.excelworld.ru/forum/2-14531-1 был получен замечательный макрос
Option Explicit Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim s$ If Target.Count > 1 Then Exit Sub If InStr(1, Target.Formula, ",") = 0 Then Exit Sub s = Target.Formula If UBound(Split(s, ",")) = 2 Then s = Replace(s, ",", ".") If IsDate(s) Then Target = Format(s, "dd.mm.yyyy") End Sub
при вводе даты макрос: 1. вместо запятых подставляет точки (что превращает введёное значение в дату) 2. преобразует "короткую" дату в "полную" (не приходится объяснять экселу какое на дворе столетие)
Вопрос в более глубокой автоматизации. т.к. человек при вводе мыслит числом и месяцем (без года) (такова специфика ввода), то хотелось бы во избежания дополнительного напряжения/отвлечения мозга на ненужные операции сократить кол-во ошибок при вводе путем избавления человека от необходимости вводить год.
тогда от вводит всего два числа. Например, "12,12", что должно означать 12.12.2014 В таком случае данный макрос необходимо дополнить двумя ограничениями: 1. указать несколько столбцов, где вводится даты (т.к. в других столбцах вводятся цифры и точку на запятую менять не надо) 2. дополнять введённую пару чисел номером года. Что можно сделать двумя путями: 2.1. либо дополнять просто числом, прописанным в конкретной ячейке (например, $E$1) 2.2. либо дополнять текущим годом (который, очевидно, можно извлечь из встроенной формулы типа "СЕГОДНЯ()")
помогите, пожалуйста, с изменением макроса [moder]Тема закрыта. Дублирование[/moder]
в теме "замена запятой на точку при вводе" (имелось в виду ввод даты) )http://www.excelworld.ru/forum/2-14531-1 был получен замечательный макрос
Option Explicit Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim s$ If Target.Count > 1 Then Exit Sub If InStr(1, Target.Formula, ",") = 0 Then Exit Sub s = Target.Formula If UBound(Split(s, ",")) = 2 Then s = Replace(s, ",", ".") If IsDate(s) Then Target = Format(s, "dd.mm.yyyy") End Sub
при вводе даты макрос: 1. вместо запятых подставляет точки (что превращает введёное значение в дату) 2. преобразует "короткую" дату в "полную" (не приходится объяснять экселу какое на дворе столетие)
Вопрос в более глубокой автоматизации. т.к. человек при вводе мыслит числом и месяцем (без года) (такова специфика ввода), то хотелось бы во избежания дополнительного напряжения/отвлечения мозга на ненужные операции сократить кол-во ошибок при вводе путем избавления человека от необходимости вводить год.
тогда от вводит всего два числа. Например, "12,12", что должно означать 12.12.2014 В таком случае данный макрос необходимо дополнить двумя ограничениями: 1. указать несколько столбцов, где вводится даты (т.к. в других столбцах вводятся цифры и точку на запятую менять не надо) 2. дополнять введённую пару чисел номером года. Что можно сделать двумя путями: 2.1. либо дополнять просто числом, прописанным в конкретной ячейке (например, $E$1) 2.2. либо дополнять текущим годом (который, очевидно, можно извлечь из встроенной формулы типа "СЕГОДНЯ()")
помогите, пожалуйста, с изменением макроса [moder]Тема закрыта. Дублирование[/moder]карандаш