本記事では、デスクワーク職の生産性の向上に役立つと考えられるエクセルVBAの便利マクロを紹介します。
具体的には「選択した’yymmdd’ or ‘yyyymmdd’形式の文字列を’yy/mm/dd’書式の日付へ変換するマクロ」をシェアします
参考になれば幸いです。
機能紹介
マクロを実行すると、選択した’yymmdd’ or ‘yyyymmdd’形式の文字列を’yy/mm/dd’書式の日付へ変換します。
マクロコード紹介
コードは以下の通りです。
Option Explicit
'*** Private定数宣言
'*** Private変数宣言
Private oBook As Object
Private oSht As Object
Private nSRow As Long
Private nERow As Long
Private nCRow As Long
Private nSCol As Integer
Private nECol As Integer
Private nCCol As Integer
Private nErr As Integer
Private rTmp As Range
Private sMsg As String
'
'### 日付形式への変換プロシージャ
'### 'yymmdd' or 'yyyymmdd'形式の文字列を'yy/mm/dd'書式の日付へ変換する
Sub 文字_日付変換()
On Error GoTo ErrChk
'*** 初期設定
nErr = 0
'*** 選択範囲の上端,左端,右端を取得
nSRow = Selection.Row
nSCol = Selection.Column
nECol = nSCol + Selection.Columns.Count - 1
'*** 選択列分ループ
For nCCol = nSCol To nECol
'*** 最終行の再設定
nERow = nSRow + Selection.Rows.Count - 1
If nERow = Rows.Count And Cells(nERow, nCCol).Value = "" Then
nERow = Cells(Rows.Count, nCCol).End(xlUp).Row
End If
'*** 範囲を取得
Set rTmp = Range(Cells(nSRow, nCCol), Cells(nERow, nCCol))
'*** 形式変換処理(文字列→日付)
rTmp.TextToColumns Destination:=rTmp, DataType:=xlFixedWidth, FieldInfo:=Array(0, 5)
'*** セルの書式設定
rTmp.NumberFormatLocal = "yy/mm/dd"
Next nCCol
'*** 終了処理
Set rTmp = Nothing
Exit Sub
ErrChk:
'*** ユーザーエラーコード
Select Case nErr
Case 0 'エラーなし
sMsg = sMsg
Case Else
sMsg = "予期せぬエラー nErr = " & nErr
End Select
'*** VBAエラーコード
Select Case Err
Case 0 'エラーなし
sMsg = sMsg
Case Else
sMsg = "予期せぬエラー Err = " & Err
End Select
MsgBox sMsg, vbOKOnly + vbCritical
Set rTmp = Nothing
End
End Sub
まとめ
いかがでしたでしょうか。
参考になれば幸いです。
その他、エクセルマクロの便利ツールは以下記事を参照ください。
本稿で紹介したマクロのサポートやカスタマイズ、もしくは新規案件については、条件によって、有償にて対応受付しております。
以下、クラウドワークスないしココナラのアカウントよりご依頼いただければ幸いです。
FIRE太郎さん(その他)に依頼・外注する | 簡単ネット発注なら【クラウドワークス】
日本最大級のクラウドソーシング「クラウドワークス」にご登録いただいているFIRE太郎さんのプロフィールです。その他のスキルを持つプロフェッショナルに1時間から仕事を気軽に発注!発注者は手数料無料。
FIRE太郎さん(会社員)のプロフィール | ココナラ
Excelマクロ(VBA)による自動化ツールの作成が得意です。|ブログ「FIRE(早期リタイア)研究所」運営中
コメント