|    | 
     こんばんは。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  
  
 | 
     
    
   |