NumberFormatとは
NumberFormatプロパティは、数値や日付の表示形式を設定するために使用されます。このプロパティを使用することで、数値や日付を特定の書式で表示することができます。
NumberFormatLocalとは
NumberFormatLocalプロパティは、NumberFormatプロパティと同様に数値や日付の表示形式を設定するために使用されます。しかし、NumberFormatLocalプロパティは、Excelファイルが開かれているローカルな言語設定に基づいて表示形式を設定します。これに対し、NumberFormatプロパティは、Excelファイルの言語設定に依存するため、異なる言語設定で同じマクロを実行する場合、表示形式が異なる可能性があります。
例えば、NumberFormatプロパティで日付の表示形式を”yyyy/mm/dd”と設定した場合、Excelファイルが言語設定が英語の場合は”yyyy/mm/dd”となり、言語設定が日本語の場合は”yyyy年mm月dd日”となります。しかし、NumberFormatLocalプロパティを使用すると、Excelファイルの言語設定に関係なく、常にローカルな言語設定に基づいて表示形式が設定されます。
選択列を日付へ変換
Sub 列日付変換()
Selection.TextToColumns DataType:=xlDelimited, FieldInfo:=Array(1, xlYMDFormat)
End Sub
A列を日付へ変換
Sub A列日付変換()
Range("A:A").NumberFormat = "m月d日(aaa)"
Range("A:A").Value = Range("A:A").Value
End Sub
2列を日付へ変換
Sub 該当列を数値から日付へ変換()
With Range("A:A", "L:L")
.NumberFormatLocal = "yyyy/m/d"
'.NumberFormatLocal = "G/標準"
'.Value = .Value
End With
MsgBox "完了"
End Sub
日付データの書式変換
Sub 日付の書式変換()
Dim i As Long
For i = 1 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
With Cells(i, 1)
.NumberFormat = "General"
.Value = Month(.Value)
End With
Next i
MsgBox "完了"
End Sub
日付データを書式を選択して文字列に変換
Sub 日付データ_書式_文字列_変換()
Dim myrange As Range
Dim n As Integer
n = Application.InputBox(prompt:="書式を選んで下さい" & vbCrLf & vbCrLf & _
"1:yyyy/m/d" & vbCrLf & "2:yyyy/m" & vbCrLf & "3:yy/m/d" & vbCrLf & _
"4:m/d" & vbCrLf & "5:yyyy年m月d日" & vbCrLf & "6:yyyy年m月" & vbCrLf & _
"7:yy年m月d日" & vbCrLf & "8:m月d日" & vbCrLf & "9:ggge年m月d日" & vbCrLf & _
"10:ggge年m月" & vbCrLf & "11:ge年m月d日" & vbCrLf & "12:ge年m月" & vbCrLf & _
"13:ge/m/d" & vbCrLf & "14:ge/m" & vbCrLf & vbCrLf & "(9~14は和暦です)" & _
vbCrLf & vbCrLf, Type:=1)
If TypeName(n) = "Boolean" Or n < 1 Or n > 14 Then
Exit Sub
End If
For Each myrange In Selection.SpecialCells(xlCellTypeVisible) '可視セルのみに処理
If myrange.Address = myrange.MergeArea(1).Address Then '結合セルの場合は左上のセルのみ処理
Select Case n
Case 1
myrange.Value = "'" & VBA.Format(myrange.Value, "yyyy/m/d")
Case 2
myrange.Value = "'" & VBA.Format(myrange.Value, "yyyy/m")
Case 3
myrange.Value = "'" & VBA.Format(myrange.Value, "yy/m/d")
Case 4
myrange.Value = "'" & VBA.Format(myrange.Value, "m/d")
Case 5
myrange.Value = "'" & VBA.Format(myrange.Value, "yyyy""年""m""月""d""日""")
Case 6
myrange.Value = "'" & VBA.Format(myrange.Value, "yyyy""年""m""月""")
Case 7
myrange.Value = "'" & VBA.Format(myrange.Value, "yy""年""m""月""d""日""")
Case 8
myrange.Value = "'" & VBA.Format(myrange.Value, "m""月""d""日""")
Case 9
myrange.Value = "'" & VBA.Format(myrange.Value, "ggge""年""m""月""d""日""")
Case 10
myrange.Value = "'" & VBA.Format(myrange.Value, "ggge""年""m""月""")
Case 11
myrange.Value = "'" & VBA.Format(myrange.Value, "ge""年""m""月""d""日""")
Case 12
myrange.Value = "'" & VBA.Format(myrange.Value, "ge""年""m""月""")
Case 13
myrange.Value = "'" & VBA.Format(myrange.Value, "ge/m/d")
Case 14
myrange.Value = "'" & VBA.Format(myrange.Value, "ge/m")
End Select
End If
Next myrange
MsgBox "完了"
End Sub
コメント