スポンサーサイト

一定期間更新がないため広告を表示しています

Excel VBA シート名「26.1」をシリアル値に変換する

原紙を作り、1月から12月までシートを最後尾に追加した後に、

シートのタイトルもシート名と同じにしてスケジュールを作成

Dim myWS As Object
Dim InputName As String
Dim i As Integer
Dim buf As String

InputData:  ’<エラーでここに戻る>
’<シート名を「26.1」と入力>
InputName = Application.InputBox(Prompt:="シート名を入力してください", Title:="新規")

'<何も入力せずOKの場合、処理を終わりにします。>
If InputName = "" Then Exit Sub

'<キャンセルの場合、処理を終わりにします。>
If InputName = "False" Then Exit Sub

'<全角が混じっている場合に半角へ変換します。>
InputName = StrConv(InputName, vbNarrow)

'<同じワークシート名がないか確認します。>
For Each myWS In Sheets
If myWS.Name = InputName Then
MsgBox "この名前は既に使われています。再入力してください。"
GoTo InputData
End If
Next

’<最後尾にシートが追加>
ActiveSheet.Copy After:=Sheets(Sheets.Count)
'<追加されたワークシートに入力された名前を付けます。>
ActiveSheet.Name = InputName  ’<シート名は:26.1>

'<これをシリアル値にするため、Replaceで.(カンマ)の区切りを/(スラッシュ)に変換
’&の後ろの1は1日の意味
buf = Replace(InputName, ".", "/") & "/1"
’26/1/1になるが、これでは、西暦になるので
’Hを結合させる
buf = "H" & buf
’最後にシリアル値に変換して、セルに代入
Range("K3").Value = DateSerial(Year(buf), Month(buf), 1)

スポンサーサイト

Comments

Leave a Reply