【 kt暦作成 : Box(大)型暦のサンプルコード 】
サンプルのように、ユーザー側での追加加工を考慮して、『kt暦作成』内では、
【ScreenUpdating = False/True 】を行なっていません。ユーザー側で必ず行って下さい。
また、『kt暦作成』 内では シート の プロテクトチェック を行ない、プロテクト時には作成
しないようになっていますが、ユーザーサイド でも事前に チェック する事をお薦めします。
下記のサンプルコードでは、出力先シートのクリア[ Cells.Clear ]を行なっています。
休日表示に『休日マップ』を使用する場合で、その『休日マップ』が出力先シート上に
用意されていると、シートクリアによって消えてしまいます。クリア前に文字列変数に
保存して「kt暦作成」にはその文字列変数を渡すようにして下さい。
Sub BOX大サンプル標準()
Dim i As Integer
Dim strADDR As String
Dim dtm基準日 As Date
Dim str基点セル As String
dtm基準日 = DateValue("2001/1/1")
str基点セル = "B2"
If (ActiveSheet.ProtectContents = True) Then
MsgBox "出力先シートがプロテクトされています"
Exit Sub
End If
Application.ScreenUpdating = False
ActiveSheet.Cells.Clear
For i = 1 To 12
strADDR = ActiveSheet.Range(str基点セル) _
.Offset(15 * (i - 1), 0).Address(False, False)
Call kt暦作成(3, dtm基準日, kt_土日祝, ActiveSheet, strADDR)
dtm基準日 = DateAdd("m", 1, dtm基準日)
Next i
Application.ScreenUpdating = True
End Sub
'------------------------------『2列表示』------------------------------
Sub BOX大サンプル2列()
Dim i As Integer
Dim j As Integer
Dim strADDR As String
Dim dtm基準日 As Date
Dim str基点セル As String
dtm基準日 = DateValue("2001/1/1")
str基点セル = "B2"
If (ActiveSheet.ProtectContents = True) Then
MsgBox "出力先シートがプロテクトされています"
Exit Sub
End If
Application.ScreenUpdating = False
ActiveSheet.Cells.Clear
' 1月目の暦作成後に[基点セル]の位置が[3列の結合セル]になる為、
' 2ヶ月目以降の[列方向Offset計算]が2列分ズレてしまう。
' これを避ける為、結合セルにならない位置を基点セルとして定義し直す。
str基点セル = ActiveSheet.Range(str基点セル).Offset(0, 3).Address(False, False)
For i = 1 To 6
For j = 1 To 2
strADDR = ActiveSheet.Range(str基点セル) _
.Offset(15 * (i - 1), 8 * (j - 1) - 3).Address(False, False)
Call kt暦作成(3, dtm基準日, kt_土日祝, ActiveSheet, strADDR)
dtm基準日 = DateAdd("m", 1, dtm基準日)
Next j
Next i
Application.ScreenUpdating = True
End Sub
'-----------------------------『3列表示』-------------------------------
Sub BOX大サンプル3列()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim strADDR As String
Dim dtm基準日 As Date
Dim str基点セル As String
dtm基準日 = DateValue("2001/1/1")
str基点セル = "B2"
If (ActiveSheet.ProtectContents = True) Then
MsgBox "出力先シートがプロテクトされています"
Exit Sub
End If
Application.ScreenUpdating = False
ActiveSheet.Cells.Clear
' 1月目の暦作成後に[基点セル]の位置が[3列の結合セル]になる為、
' 2ヶ月目以降の[列方向Offset計算]が2列分ズレてしまう。
' これを避ける為、結合セルにならない位置を基点セルとして定義し直す。
str基点セル = ActiveSheet.Range(str基点セル).Offset(0, 3).Address(False, False)
For i = 1 To 4
For j = 1 To 3
strADDR = ActiveSheet.Range(str基点セル) _
.Offset(15 * (i - 1), 8 * (j - 1) - 3).Address(False, False)
Call kt暦作成(3, dtm基準日, kt_土日祝, ActiveSheet, strADDR)
dtm基準日 = DateAdd("m", 1, dtm基準日)
Next j
Next i
Application.ScreenUpdating = True
End Sub
角田 桂一 Mail:addinbox@h4.dion.ne.jp CopyRight(C) 2001 Allrights Reserved.