powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Быстрый ввод даты и времени в одну ячейку
8 сообщений из 8, страница 1 из 1
Быстрый ввод даты и времени в одну ячейку
    #38518768
cyg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cyg
Гость
Подскажите пожалуйста.
Необходимо реализовать ввод даты и времени в одну ячейку бытрым методом без точек пробелов и двоеточий.
Т.е. ввожу например 410131500, а получаю 04.10.2013 15:00.
Нашёл похожий макрос:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vVal
Dim StrVal As String
Dim dDate As Date
 
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("A2:A10")) Is Nothing Then
        With Target
        StrVal = Format(.Text, "000000")
        If IsNumeric(StrVal) And Len(StrVal) = 6 Then
            Application.EnableEvents = False
            dDate = DateValue(Left(StrVal, 2) & "/" & Mid(StrVal, 3, 2) & "/" & Right(StrVal, 2))
            .NumberFormat = "dd/mm/yyyy"
            .Value = CDate(DateSerial(Year(dDate), Month(dDate), Day(dDate)))
           End If
        End With
    End If
     
    If Not Intersect(Target, Range("B2:B10")) Is Nothing Then
        With Target
            vVal = Format(.Value, "0000")
            If IsNumeric(vVal) And Len(vVal) = 4 Then
                Application.EnableEvents = False
                .Value = Left(vVal, 2) & ":" & Right(vVal, 2)
                .NumberFormat = "[h]:mm"
            End If
        End With
     End If
     Application.EnableEvents = True
 
End Sub


но здесь дата и время разделяются по разнам ячейкам.
Я пробовал отредактировать под нужный мне формат, но так как не силён в программировании, ничего не получилась.
Буду благодарен за помощь.
Модератор: Чтобы получить правильное оформление кода, нужно использовать тэг SRC VBA а не XML - логично?
...
Рейтинг: 0 / 0
Быстрый ввод даты и времени в одну ячейку
    #38518789
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cygввожу например 410131500, а получаю 04.10.2013 15:00.Уже бред.
Нет, на ТАКИХ данных это проканает... а если ввести 111131500, то как интерпретировать?
01/11/2013 15:00 или 11/01/2013 15:00 или 11/11/2003 15:00? И даже не столь важно КАК, сколь ПОЧЕМУ именно так, а не иначе...

Не проработана постановка задачи. Иди думай дальше.
...
Рейтинг: 0 / 0
Быстрый ввод даты и времени в одну ячейку
    #38518798
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поддерживаю предыдущего оратора - формализуйте ввод и, возможно, код уложится в три-четыре строки.
...
Рейтинг: 0 / 0
Быстрый ввод даты и времени в одну ячейку
    #38518844
cyg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cyg
Гость
Извиняюсь, если не совсем правильно поставил вопрос. Суть в том, чтоб вводить цифры без знаков пунктуации. Количество цифр роли не играет, значение имеет конечный формат. Например:
0410131020 ---- 04.10.2013 10:20 или
041020131020 ---- 04.10.2013 10:20
Эти данные из Exel будут копироваться в Access. В ассеss ячейка с датой и временем именно такого формата, по-этому по другому не получается вставить. Конечно, проще это напрямую в access сделать по маске ввода, но данные набираю не я, а люди категорически не хотят работать с access, а только с exel, да ещё требуют быстрого ввода без точек пробелов и двоеточий.
...
Рейтинг: 0 / 0
Быстрый ввод даты и времени в одну ячейку
    #38518853
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cyg0410131020 ---- 04.10.2013 10:20 или
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub Worksheet_Change(ByVal Target As Range)
 
Dim k As String
If Target.Cells.Count > 1 Then Exit Sub
With Target
  k = .Text
  If Not k Like "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]" Then Exit Sub
  Application.EnableEvents = False
  .Value = DateSerial(2000 + CInt(Mid$(k, 5, 2)), CInt(Mid$(k, 3, 2)), CInt(Mid$(k, 1, 2))) + TimeSerial(CInt(Mid$(k, 7, 2)), CInt(Mid$(k, 9, 2)), 0)
  Application.EnableEvents = True
End With
 
End Sub
...
Рейтинг: 0 / 0
Быстрый ввод даты и времени в одну ячейку
    #38518860
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro ,
Предлагаю
Код: vbnet
1.
If Not k Like "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]" Then Exit Sub


заменить на:
Код: vbnet
1.
If Not k Like "##########" Then Exit Sub


чисто для краткости и может некоторой удобочитаемости. Хотя тут кто как привык, конечно...

cyg : в коде от Shocker.Pro(предполагаю намеренно) использовано свойство Text(k = .Text). Поэтому два раза в одну ячейку ввести число и получить результат кодом не получится без предварительного преобразования формата ячейки в Текстовый.
Ну и мой код(спаразитирую на коде Shocker.Pro, если он не против):
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim k As String, sD As String
    If Target.Cells.Count > 1 Then Exit Sub
    With Target
        k = .Text
        If Not k Like "##########" Then Exit Sub
        Application.EnableEvents = False
        sD = Left(k, 2) & "/" & Mid(k, 3, 2) & "/" & Mid(k, 5, 2) & " " & Mid(k, 7, 2) & ":" & Right(k, 2)
        If IsDate(sD) Then .Value = CDate(sD)
        Application.EnableEvents = True
    End With
End Sub
...
Рейтинг: 0 / 0
Быстрый ввод даты и времени в одну ячейку
    #38518880
cyg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cyg
Гость
Большое спасибо за помощь.
Только не могу понять, почему у меня этот код даёт вот такой результат:
0410131020 ---- 10/4/2013 10:20:00 AM
но при копировании в ячейку access всё вставляется как надо. Думаю, ничего страшного, пойдёт и так.
Ещё раз спасибо.
...
Рейтинг: 0 / 0
Быстрый ввод даты и времени в одну ячейку
    #38518882
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что у тебя в настройках панели управления американский формат даты
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Быстрый ввод даты и времени в одну ячейку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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