powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Набор даты
16 сообщений из 16, страница 1 из 1
Набор даты
    #33184905
Фотография Jojo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно сделать макрос чтобы при вколачивании 8 знаков или 6 цифра преоразовалась к формату даты с разделителями . или - как в 1С бухгалтерии.


Scio me nihil scire


<<Jojo®>>
...
Рейтинг: 0 / 0
Набор даты
    #33185003
А порядок ввода определенный?

Код: plaintext
 26072005 

Или могут быть разные варианты?

Код: plaintext
1.
2.
 26072005 
 07262005 
 20050726 
...
Рейтинг: 0 / 0
Набор даты
    #33185015
SAS!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а маску ввода исползовать?
...
Рейтинг: 0 / 0
Набор даты
    #33185068
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А енто хде ? В Экселе или...
Stepler (щёлк-щёлк!!)

Код: plaintext
 P.S.Присутствовали ли Вы, когда Вас фотографировали?  
...
Рейтинг: 0 / 0
Набор даты
    #33185092
Фотография Jojo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользователь2А порядок ввода определенный?

Код: plaintext
 26072005 

Или могут быть разные варианты?

Код: plaintext
1.
2.
 26072005 
 07262005 
 20050726 


да типа этого ...26072005 - > 26.07.2005
19121975 -> 19.12.1975
нужно при вводе ...или при нажатии Enter
...
Рейтинг: 0 / 0
Набор даты
    #33185094
Фотография Jojo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SAS!а маску ввода исползовать?

нет опыта где ставит ## ...
приведи пож-та пример
...
Рейтинг: 0 / 0
Набор даты
    #33185149
mihmih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Разместить в модуле листа(листов):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim s As String
Dim Separator
Separator = "."
Target.Cells( 1 ,  1 ).NumberFormat = "General"
 If Len(Target.Cells( 1 ,  1 )) =  8  Then
  s = Target.Cells( 1 ,  1 )
  Target.Cells( 1 ,  1 ) = Mid(s,  1 ,  2 ) + Separator + Mid(s,  3 ,  2 ) + Separator + Mid(s,  5 ,  4 )
  Target.Cells( 1 ,  1 ).NumberFormat = "m/d/yyyy"
 End If
End Sub
2. Дороботать напильником :)
...
Рейтинг: 0 / 0
Набор даты
    #33185165
Надо еще учесть, что при таком вводе 01012005 в формат ячейки "Общий"
будет отображаться 1012005 .
...
Рейтинг: 0 / 0
Набор даты
    #33185182
Фотография Jojo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mihmih1. Разместить в модуле листа(листов):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim s As String
Dim Separator
Separator = "."
Target.Cells( 1 ,  1 ).NumberFormat = "General"
 If Len(Target.Cells( 1 ,  1 )) =  8  Then
  s = Target.Cells( 1 ,  1 )
  Target.Cells( 1 ,  1 ) = Mid(s,  1 ,  2 ) + Separator + Mid(s,  3 ,  2 ) + Separator + Mid(s,  5 ,  4 )
  Target.Cells( 1 ,  1 ).NumberFormat = "m/d/yyyy"
 End If
End Sub
2. Дороботать напильником :)

реально конечно ...а если я введу просто цифири-суммы или данные из цифр 8 знаков они у меня тоже пребразуются :/
...
Рейтинг: 0 / 0
Набор даты
    #33185198
Фотография talgat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наверное нужно проверять с конца. Если =2005 то .......
...
Рейтинг: 0 / 0
Набор даты
    #33185233
Фотография Jojo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
talgatнаверное нужно проверять с конца. Если =2005 то .......

год будет менятся в широких диапазонах 1960-2005
...
Рейтинг: 0 / 0
Набор даты
    #33187564
mihmih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jojoреально конечно ...а если я введу просто цифири-суммы или данные из цифр 8 знаков они у меня тоже пребразуются :/

If Target.Left = NeedColumn Then ....
...
Рейтинг: 0 / 0
Набор даты
    #33188193
Фотография Jojo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mihmih Jojoреально конечно ...а если я введу просто цифири-суммы или данные из цифр 8 знаков они у меня тоже пребразуются :/

If Target.Left = NeedColumn Then ....

Не могу врубится что здесь NeedColumn ?
...
Рейтинг: 0 / 0
Набор даты
    #33188200
Фотография Jojo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
работает :)
и если у меня не один столбец с датами а несколько
и еще столбцы не смежные
как тогда?

Scio me nihil scire

<<Jojo®>>
...
Рейтинг: 0 / 0
Набор даты
    #33190961
Фотография Jojo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поможите пожта

Scio me nihil scire

<<Jojo®>>
...
Рейтинг: 0 / 0
Набор даты
    #33193513
Фотография Jojo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот :)


' Процедура преобразования даты
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Static dont As Boolean
Separator = "."
If Not dont Then
Select Case Target.Column
'Укажите столбцы где нужно преобразование
Case 6, 7, 11, 12, 21, 22, 31, 35, 41, 42, 50
If IsNumeric(Target.Value) Then
Select Case Len(Target.Value)
Case 8
dont = True
Target.Value = Left$(Target.Value, 2) & Separator & Mid$(Target.Value, 3, 2) & Separator & Right$(Target.Value, 4)
dont = False
Case 6
dont = True
If Mid(Target.Value, 5, 1) = 0 Then
Target.Value = Left$(Target.Value, 2) & Separator & Mid$(Target.Value, 3, 2) & Separator & "20" & Right$(Target.Value, 2)
Else
Target.Value = Left$(Target.Value, 2) & Separator & Mid$(Target.Value, 3, 2) & Separator & "19" & Right$(Target.Value, 2)
End If
dont = False
Case Else
MsgBox ("Неверно заведена дата или пустое значение !")
End Select
End If
End Select
End If

End Sub

Scio me nihil scire

<<Jojo®>>
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Набор даты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]