第4回(4月21日)の復習 続き
第4回(4月21日)の復習をしていて、
前回 書いた、VBAで~ 第4回 SheetDetect という関数を作って、
練習4、練習5、練習6までを実行してみました。
実行すると、
選択したシートに、データが存在する可能性があります。
データを完全に削除するには、[削除]をクリックしてください。
というダイアログボックスが表示されます。
[削除]をクリックすると、
また同じダイアログボックスが出てきて、
ということを12回繰り返されました。
確認ダイアログボックスを出さない設定
このダイアログボックスを出さない命令
Application.DisplayAlerts = False
を、For ループの前に入れます。
確認ダイアログボックスを出す設定
出さない設定にしっぱなしだと、不都合がが出てくる場合もあるので、
ダイアログボックスを出す設定
Application.DisplayAlerts = True
を、For ループのあとに、入れておきます。
F5 キーで動作確認すると、一瞬で実行されるので、
何が起こっているかわかりません。
こういう時は、F8 キーを押していくと、
プロシージャの1行ずつを実行していくので、
何が起こっているか、わかっていいです。
西暦○○○○年2月は、29日、28日?
変数のところに、Dim year を追加します。
Sub sample()
Dim i
Dim j
Dim saishuubi
Dim year
2月の設定のところに、IF 構文を使って、
Case 2
If (year Mod 400 = 0) Or _
(year Mod 4 = 0) And _
(year Mod 100 <> 0) Then
saishuubi = 29
Else
saishuubi = 28
End If
を追加します。
Or _
And _ のところは、見やすくするために、
or を打ち込んで、スペース _ エンターキーで改行
And のところも、スペース _ エンターキーで改行させています。
改行しないと、
If (year Mod 400 = 0) Or (year Mod 4 = 0) And (year Mod 100 <> 0) Then
と、1行がながくなるだけですが。
この辺は、好みの問題という気もします。
カレンダーを作成したい年
さいごに、元のSheet1の、セルB2 に、
カレンダーを作成したい年を入力します。
B2 セルに、2019、C2 セルに、年
とか書いておきます。
プロシージャの方で、
セルB2 を指定する(数値を受けとる)設定を追加します。
Sub sample()
Dim i
Dim j
Dim saishuubi
Dim year
year = Cells(2, 2).Value
全体のプロシージャは、
Sub sample()
Dim i
Dim j
Dim saishuubi
Dim year
year = Cells(2, 2).Value
Application.DisplayAlerts = False
For i = 1 To 12
If SheetDetect(Str(i) & “月”) Then
Worksheets(Str(i) & “月”).Delete
End If
Worksheets.Add after:=Sheets(i)
Columns(“B:AF”).ColumnWidth = 3
ActiveSheet.Name = Str(i) & “月”
Select Case i
Case 1, 3, 5, 7, 8, 10, 12
saishuubi = 31
Case 4, 6, 9, 11
saishuubi = 30
Case 2
If (year Mod 400 = 0) Or _
(year Mod 4 = 0) And _
(year Mod 100 <> 0) Then
saishuubi = 29
Else
saishuubi = 28
End If
End Select
For j = 1 To saishuubi
Cells(27, j + 1) = j
Next
Next
Application.DisplayAlerts = True
End Sub
Function SheetDetect(SName As String) As Boolean
Dim sht As Worksheet
For Each sht In ThisWorkbook.Worksheets
If sht.Name = SName Then
SheetDetect = True
Exit Function
End If
Next
End Function
マクロのボタン追加
元のsheet1 をアクティブにして、
開発 > 挿入 で、ボタンを選択します。
ボタンをクリックすると、この画面になります。
sample を選択。
この画面が出てくるので、
ボタン1 のところに、
カレンダー作成と入れておきます。
カレンダー作成 ボタンを押すと、こんな感じで、
カレンダー作成の途中までが、完成します。
ここまで、出来上がれば、もう一息という感じ。