|
自分が別の処理で日付変換している実際のコードをアップしておきます。
実際の文字が「19990512」
と並んでいるときの処置です。
西暦固定で元々処理してます。
和暦の場合は処置としては
昭和元年が1926年
平成元年が1987年
ですので それぞれ S=1925を加算
H=1986を加算すれば西暦になります。
よってそれらを加算するものをつくれば下のものをそのまま応用可能です
別の方法は
DateValue関数を利用することですが
和暦の場合[H16-4-2]
と表示が基本ですので前処理が必要です
また、文字列しか認識しないため、文字列にする前処理も
必要です
----------------------------------------
Sub 日付変換処理()
'
' 日付変換処理 コア部分
'
'
' 文字列8文字をエクセル日付書式に変更
'
' セルの書式も日付に変更
Dim varA As Variant '20020909で表示
Dim strC(3) As String
Dim datB As Date '代入後そのセルが日付属性をもつことになる
Dim strD As String
strD = "/"
varA = ActiveCell.Value
strC(1) = Left(varA, 4) '西暦(4桁)
strC(2) = Mid(varA, 5, 2) '月(2桁)
strC(3) = Right(varA, 2) '日(2桁)
datB = CDate(strC(1) + strD + strC(2) + strD + strC(3))
ActiveCell.FormulaR1C1 = datB
End Sub
------------------------------------------------------------------------
Sub 日付に変換()
'
' 範囲を選択して そのデータを日付にする。
'
Dim 行数 As Long, 列数 As Integer
Dim i As Long, j As Integer
Dim セル As Variant
' ActiveCell.CurrentRegion.Select
' 範囲選択の行列(サイズ)を変数に代入
列数 = Selection.Columns.Count
行数 = Selection.Rows.Count
For i = 1 To 行数
For j = 1 To 列数
Selection.Cells(i, j).Activate
セル = ActiveCell.Value
' 8桁以外は無視
If Len(セル) = 8 Then
Application.Run "日付変換処理"
End If
Next j
Next i
End Sub
|
|