在VBA中,我想以所需格式获取DATE?

时间:2015-12-08 10:25:41

标签: vba excel-vba excel

我以

的格式获得了日期

- 格式

的可能变体

2018年12月17日

2018年1月17日

2018年12月1日

2018年1月2日

单元格格式为GENERAL

结果:我希望它将其转换为以下格式,并将单元转换为DATE格式

17-12-2018

17-1-2018

2018年1月12日

2018年2月1日

感谢您的回应。

sub ggf()
Dim retval, BN As String   ' This is the return string.      '
    Dim i As Integer
Dim myStr, BB As String
 AY = Cells(4, 4).Value
 BB = AY
retval = ""
 For i = 1 To Len(BB)
        If Mid(BB, i, 1) >= "0" And Mid(BB, i, 1) <= "9" Then
            retval = retval + Mid(BB, i, 1)
        End If
    Next i

If Len(retval) = 8 Then
  BX = Left(retval, 4)
  BY = Right(retval, 2)
  BZ = Mid(retval, 5, 2)
   BN = BY.BZ.BX
   MsgBox BN
 Else
End If
Cells(4, 10).Value = BN
End Sub

我在这里尝试将日期格式转换为字符串并删除

非数字字符并相应地将其反转并稍后添加分隔符。

但如果字符的长度发生变化,则定义无效且

我觉得这不是正确的做法。我也没有添加分隔符。

2 个答案:

答案 0 :(得分:0)

使用format关键字将其更改为您需要的日期格式

    Sub ggf()


    Dim retval, BN As String ' This is the return string.
    ' Dim i As Integer
    Dim myStrBB As String
    AY = Cells(4, 4).Value
    BB = AY

    rs = Format(BB, "DD-MM-YYYY")

    Cells(4, 5).Value = rs

    'Debug.Print rs
    MsgBox rs

End sub

答案 1 :(得分:0)

数据列 A ,如:

enter image description here

这个小宏:

Sub DateFixer()
   Dim r As Range, v As String, d As Date
   For Each r In Intersect(Range("A:A"), ActiveSheet.UsedRange)
      v = r.Text
      If v <> "" Then
         ary = Split(v, "-")
         d = DateSerial(ary(0), ary(1), ary(2))
         r.Clear
         r.Value = d
         r.NumberFormat = "d-m-yyyy"
      End If
   Next r
End Sub

将产生:

enter image description here