にっきダイアリー

はてなダイアリーからはてなblogに移動してみました。

Excelマクロのメモ

「月/日」なデータをExcelシートに入力したら勝手に「今年/月/日」になって困ったことはありませんか。私はあります。
一つ2つなら手で治すんですが3000件位あるデータの中のあちこちにそういうのがあって一つ一つ潰してくのが嫌だったのでマクロ書いてました。
多分数年後にまた使うと思うので日記に残しておきます。

Option Explicit

' 選択範囲にある日付の年だけを指定した年に変更する
Sub changeYear()
    Dim rw, cl, dt, cy, rng, dstr
    If TypeName(Selection) = "Range" Then
        Set rng = Selection
        cy = InputBox("変更したい年を指定してください", "年だけ変更", Year(Date))
        If IsNumeric(cy) = False Then Exit Sub
        If CInt(cy) < 1900 Then Exit Sub
        For rw = 1 To rng.Rows.Count
            For cl = 1 To rng.Columns.Count
                dt = rng.Cells(rw, cl).Value
                If IsDate(dt) = True Then
                    dstr = cy & "/" & Format(dt, "mm/dd")
                    rng.Cells(rw, cl) = dstr
                    'Debug.Print dstr
                End If
            Next cl
        Next rw
    End If
End Sub

前は結構普通の日記も書いてたのに最近なんかマクロの保管場所でしか使ってない気がする。