Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Dúvida sobre formatação de coluna do tipo data

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
genebaldorios
Colaborador
Colaborador
Mensagens: 16
Registrado em: Qua Jul 19, 2017 10:59 pm

Dúvida sobre formatação de coluna do tipo data

Mensagem por genebaldorios »

Pessoal, boa noite!
Uma dúvida sobre formatação de coluna do tipo data:
Ao tentar usar o Format(cells,1), "dd-mm-yyyy")) não tive êxito para formatar dados para o padrão Br (dd/mm/aaaa). Por isso, to usando duas rotinas no VBA: uma com dateserial e outra para colar os valores nas colunas . Alguma sugestão que nao precise de dois códigos?

Option Explicit
Sub ConversaoData()
Dim i As Integer
Dim dia As Byte
Dim mes As Byte
Dim ano As Integer

For i = 2 To Range("B1048576").End(xlUp).Row
'coluna b
dia = Day(Cells(i, 2)): mes = Month(Cells(i, 2)): ano = Year(Cells(i, 2))
'dia = Day(Cells(i, 2)): mes = Month(Cells(i, 2)): ano = Year(Cells(i, 2)): If Cells(i, 2) = "" Then Cells(i, 3) = "" Else Cells(i, 3) = DateSerial(ano, mes, dia)


'coluna g
'dia = Day(Cells(i, 7)): mes = Month(Cells(i, 7)): ano = Year(Cells(i, 7)): If Cells(i, 7) = "" Then Cells(i, 8) = "" Else Cells(i, 8) = DateSerial(ano, mes, dia)
'coluna h
'dia = Day(Cells(i, 8)): mes = Month(Cells(i, 8)): ano = Year(Cells(i, 8)): If Cells(i, 8) = "" Then Cells(i, 9) = "" Else Cells(i, 9) = DateSerial(ano, mes, dia)
'coluna k
'dia = Day(Cells(i, 11)): mes = Month(Cells(i, 11)): ano = Year(Cells(i, 11)): If Cells(i, 11) = "" Then Cells(i, 12) = "" Else Cells(i, 12) = DateSerial(ano, mes, dia)

'Next i

Cells(i, 3) = DateSerial(ano, mes, dia)
'execução coluna g - transformação: ao invés de Cells(i, 8) = DateSerial(ano, mes, dia) coloque: Cells(i, 7) = DateSerial(ano, mes, dia)
'execução coluna h - transformação: ao invés de Cells(i, 9) = DateSerial(ano, mes, dia) coloque: Cells(i, 8) = DateSerial(ano, mes, dia)
'execução coluna k - transformação: ao invés de Cells(i, 12) = DateSerial(ano, mes, dia) coloque: Cells(i, 11) = DateSerial(ano, mes, dia)
Next i
End Sub

Sub CopiarColunas()
Dim firstrowDB As Long
Dim arr1, arr2, arr3, arr4
Dim i As Long
arr1 = Array("C")
arr2 = Array("B")
arr3 = Array("F")
arr3 = Array("G")
For i = LBound(arr1) To UBound(arr1)
Planilha6.Columns(arr1(i)).Copy
Planilha6.Columns(arr2(i)).PasteSpecial Paste:=xlPasteAll
Planilha6.Columns(arr2(i)).Copy
Planilha6.Columns(arr3(i)).PasteSpecial Paste:=xlPasteAll
Next
Application.CutCopyMode = False
End Sub


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Dúvida sobre formatação de coluna do tipo data

Mensagem por webmaster »

Essa tarefa de conversão de datas é uma dor no VBA mesmo. Se você conseguir garantir o formato da célula na planilha, facilita. De toda forma, quando o valor for para o VBA, ele vai automaticamente ser convertido para o formato americano.

Eu gostei da sua alternativa. Porque não transforma ela em uma função? Aí dá para usar sem problema


Responder