|
こんばんは。PONPONです。
またまたお世話になります。明日が台風のため(今年4日目です。先のことを考えると不安ですが・・・)休みになったので(もちろん職員は年休ですよ)、今まで書いていたコードを見直しています。
以下質問です。
職員用に年間時間割の自動作成を作っています。
コードを見てみると、参照するセルが違うだけだったり、参照するシートが違うだけだったりするコードがたくさんあります。
ひな形のコード(引数付き)を作り、引数にセルを入力することで、同じようなコードを少なくしたいと思い挑戦しています。
XXXXX(i AS InTger,j AS InTeger)とし、コードの参照セルをCells(i,j)とすることで、何とかうまくできました。
Call XXXXX(2,5) とか Call XXXXX(4,8)
(本当に正しいかどうかはわかりませんが、一応思った通りに動作しています。やったね!!)
しかし、引数にWorksheetや文字をいれて同じようにしても、「型が一致しません」とエラーが発生してしまいます。
以下コードの説明
各種設定シートに、年月日入力欄とその横にあるチェックボックス6個(1校時から6校時まで)を設定しています。
行事設定シートに、たとえば、年月日を入力し、1校時、2校時をチェックし、コマンドボタンをクリックすると、年度時数(全)シートにある同じ年月日の年間時間割の1校時時2校時にに「行」を入力するというものです。
欠時設定シートでは同じように「欠」を、その他設定では、特定セル上の任意の一文字を というものです。
これを各種設定(ABC AS Worksheet, MOJI AS String)
というひな形を作り、シートと文字を指定することで、簡略化できないものかと考えています。
Call 各種設定(行事設定,行) こんなふうに
こんな説明でわかりますか? うまく伝わるといいけど・・・
よろしくお願いします。
Sub 行事設定()
Dim TATE_G As Integer
Dim YOKO_G As Integer
Dim TATE_N As Integer
Dim N As Integer
Dim 色番号 As Variant
Dim KYMD As Date
Dim GYMD As Date
For TATE_G = 5 To 34
For YOKO_G = 1 To 6
If Worksheets("行事設定").Cells(TATE_G, 35).Value <> "" Then
↑ここが違うだけ
GYMD = Worksheets("行事設定").Cells(TATE_G, 35).Value
↑
If Worksheets("行事設定").Cells(TATE_G, YOKO_G + 35).Value = True Then
↑
For TATE_N = 4 To 85
For N = 3 To 31 Step 7
If Worksheets("年度時数(全)").Cells(TATE_N, N).Value <> "" Then
KYMD = Worksheets("年度時数(全)").Cells(TATE_N, N).Value
If Format(GYMD, "YYYY/MM/DD") = Format(KYMD, "YYYY/MM/DD") Then
Sheets("年度時数(全)").Select
Range(Cells(TATE_N, YOKO_G + N), Cells(TATE_N, _
YOKO_G + N)).Select
色番号 = Selection.Interior.ColorIndex
If 色番号 = 15 Or 色番号 = 38 Or 色番号 = 48 Then
ElseIf Sheets("年度時数(全)").Cells(TATE_N, _
YOKO_G+ N).Interior.ColorIndex = 15 Then
Else
Sheets("年度時数(全)").Cells(TATE_N, _
YOKO_G + N).Value = "行"
↑
ここの文字が違うだけ
Worksheets("年度時数(全)").Range(Cells(TATE_N, _
YOKO_G + N), Cells(TATE_N, YOKO_G + N)).Select
Selection.Font.ColorIndex = 3
Selection.Font.Bold = True
Selection.Interior.ColorIndex = 35
End If
End If
End If
Next
Next
End If
End If
Next
Next
End sub
|
|