| 
    
     |  | 勤務期間を計算するに当たって、お願いがあります。 フォームに、採用日・退職日を入力し、
 コマンドボタンを押すと、期間が表示されるようにしたいと思いました。
 (採用日と退職日も含まれるようにする)
 
 下記のVBAをネット上で見つけたのですが、
 打ち込みましたところ、エラーが出て、計算されません。
 私の解読力では、「picture1.cls」の意味も分かりませんでした。
 フォームは、採用日・退職日・期間表示場所をtextboxにし、
 それぞれ、Text1,Text2,picture1と名前を変えました。
 
 どのようにすれば、動きますでしょうか。
 何分初心者なので、よろしくお願いいたします。
 
 Private Sub Command2_Click()
 Dim sd As String, ed As String
 Dim y As Integer, m As Integer, d As Integer
 
 sd = Text1.Text
 ed = Text1.Text
 
 Call kikan2(sd, ed, y, m, d)
 
 picture1.cls
 picture1.Print y; "年"; m; "月"; d; "日"
 
 End Sub
 
 Private Sub kikan2(sd As String, ed As String, y As Integer, m As Integer, d As Integer)
 Dim sdv As Variant, edv As Variant
 Dim sdy As Integer, sdm As Integer, sdd As Integer
 Dim edy As Integer, edm As Integer, edd As Integer
 Dim sd2 As String, ed2 As String
 Dim sn As Integer, sn2 As Integer
 Dim en As Integer
 Dim sn3 As Integer
 
 If sd = "" Or ed = "" Then Exit Sub
 sdv = DateValue(sd): edv = DateValue(ed)
 If sdv > edv Then Exit Sub
 
 sdy = Year(sdv): sdm = Month(sdv): sdd = Day(sdv)
 edy = Year(edv): edm = Month(edv): sdd = Day(edv)
 If sdy = 0 And sdm = 0 And sdd = 0 Then Exit Sub
 If edy = 0 And edm = 0 And edd = 0 Then Exit Sub
 sn = Day(DateValue(DateSerial(sdy, sdm + 1, 1)) - 1)
 sn2 = sn - sdd + 1
 sn3 = DateDiff("d", sd, DateSerial(sdy, sdm + 1, sdd))
 
 en = Day(DateValue(ed) + 1)
 
 y = edy - sdy
 m = edm - sdm
 d = sn2 + edd
 
 If sdd = 1 Then
 d = d - sn2
 Else
 If y = 1 And m = 0 Then
 d = edd - sdd + 1
 Exit Sub
 End If
 m = m - 1
 End If
 
 If en = 1 Then
 d = d - edd
 m = m + 1
 End If
 
 If d > sn3 Then
 d = d - sn3
 m = m + 1
 End If
 
 If m < 0 Then
 m = 12 + m
 y = y - 1
 End If
 
 If m = 12 Then
 m = m - 12
 y = y + 1
 End If
 
 |  |