Como definir o formato da data ao inserir manualmente a data no Excel, sem alterar as configurações regionais?

Como definir o formato da data ao inserir manualmente a data no Excel, sem alterar as configurações regionais?

Na minha localidade, a data é inserida como dd/mm/aaaa ou variações disso (incluindo dd-mm-aa). Fiz um formulário Excel (em arquivo Excel normal), já formatado para mostrar a data como dd/mm/aaaa, mas quando digitei "05/04/2015" será mostrado como "04/05/2015". Eu sei que isso pode ser resolvido mudando o cenário regional para o meu cenário local, mas preciso distribuir este formulário para muitas pessoas sem conhecimento de como mudar o cenário regional, e presumindo que ninguém possa ensinar como fazê-lo, daí a minha pergunta:

Existe alguma maneira de inserir "05/04/2015" e ser reconhecido como "5 de abril de 2015" sem precisar alterar as configurações regionais?

Observação adicional: quando me refiro a "4 de maio de 15" (digitado em 5/4/15), o Excel reconhecerá isso como "5 de abril de 15" porque o Excel aceita a entrada no formato "mm/dd/aa". Preciso alterar o comportamento padrão do Excel para "dd/mm/yyyy"pois esta é a forma como os usuários irão inserir.

Se possível, a configuração também deve ser incluída/incorporada no arquivo para permitir que os usuários finais usem o formulário sem sequer alterar a configuração.

Não estou familiarizado com macros e VBA, mas estou disposto a experimentá-los :)

EDIT: isso está relacionado à minha pergunta: Como alterar o formato da data de dd-mm-aaaa para dd-mm-aa na barra de fórmulas do MS-EXCEL?

mas não preciso alterar toda a barra de fórmulas, desde que o Excel reconheça que estou digitando no formato dd/mm/aa.

Responder1

O Worksheet_Changeevento poderia essencialmente realizar o que você está pedindo, mas você precisa ter certeza de que o usuário pretende que as coisas mudem. Adicionei uma 'Yes/No'caixa de escolha à minha solução para evitar alterações acidentais. Fazer isso sem uma caixa de escolha é arriscado porque se você tentasse editar um valor existente, ele voltaria à formatação original.

Este código deve 'viver' dentro do código VBA da planilha na qual você deseja que ele atue:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim iDay, iMonth, iYear As Integer
Dim solutionRange As Range

'the cells you want the date to change for
Set solutionRange = Range("D4:D12")

'only triggers if the user's changing one cell
If Target.Count = 1 Then
    If (Not (Intersect(solutionRange, Target) Is Nothing) And (Target.Value > 0)) Then
        'disable application events so this change doesn't trigger itself
        Application.EnableEvents = False

        iDay = Left(Target.Value, 2)
        iMonth = Mid(Target.Value, 4, 2)
        iYear = Right(Target.Value, 4)

        ' Give the user a choice to say whether they need the date changed. You *can* remove both the 'If' and 'End If' if you really need to, but I'd strongly suggest keeping them.
        If (MsgBox("Have you entered your date in the format 'MM/DD/YYYY'?", vbYesNo) = vbYes) Then
            Target.Value = DateValue(iMonth & "/" & iDay & "/" & iYear)
        End If

        Application.EnableEvents = True
    End If
End If
End Sub

Responder2

Eu sei exatamente do que você está falando. Gosto de digitar AA-MM-DD. A configuração para alterá-lo para o que você deseja não está no Excel. A configuração que você deseja está no Windows. Ele está escondido em algum lugar do painel de controle "hora e idioma".

Tive que ir para uma configuração avançada "Alterar formato de hora e data" e alterar a configuração "Data abreviada".

Dependendo de qual sistema operacional você usa, as instruções podem ser um pouco diferentes.

Espero que isto ajude.

Responder3

Eu não acho que você possa alterar o padrão. É especialmente difícil consertar quando você importa dados do exterior.

A maneira menos complicada de fazer isso que consigo pensar é algum tipo de maneira manual ...


Opção 1: Poderíamos aceitar as entradas emtextoformate e coloque-os nas células, desta forma o Excel não tentará interpretá-los como datas. Então, em uma célula adjacente poderíamos usar a função DATE junto com LEFT, RIGHT e MID. Por exemplo (especifique que o usuário deve inserir a data por extenso MM/DD/AAAA):

Célula A1: 05/04/2015

Célula B1: =DATA(DIREITA(A1,4), ESQUERDA(A1,2), MEIO(A1,4,2) )


Opção 2: Solicite que o usuário insira o ‘dia’, o ‘mês’ e o ‘ano’ em três células ou campos separados, que podem ser melhores ou piores dependendo da sua configuração.

De qualquer forma, boa sorte!

Responder4

Tive o mesmo problema ao atribuir um novo valor de dados à minha célula usando o mesmo formato que ela já tinha

12/02/2018 seria trocado para 2 de dezembro de 2018, embora o formato da célula de destino estivesse no mesmo formato.

Usar ..Range("B10").Value = DateValue(newdate) resolveu meu problema

informação relacionada