私の組織がスタッフのために毎週病気情報を提出する必要があるスプレッドシートを持っています。スプレッドシートには、その年の各週に1つのタブがあり、ある週から次の週に従業員の詳細をコピーするためのマクロがすでにあります。
以下のコードを組み込んで、まだ病気休暇中のスタッフをピックアップし、病気期間の開始日を翌週にコピーしようとしています。このコードは、ループ内の文字列として従業員番号を取得し、開始日のオブジェクトを作成することで機能します。
テンプレートのレイアウトやその他の情報のために、ある週から次の週にシート全体を単純にコピーして貼り付けることはできません。
改訂SicknessStart
以下の改訂されたコードは、最初の日付をに
コピーするようになりましたNextWeek
。ただし、これは最初の日付でのみ機能し、何らかの理由で後続の行から情報をコピーしません。日付形式も米国形式でコピーされていますが、私はそれを調べています。
Sub CopyDate
Dim I As Integer, CopyDate As Boolean
I = 6
CopyDate = False
'Use the Employee Number column (C) to perform the check on the sickness dates
Do While CurrentWeek.Cells(I, 3) <> ""
'Check if there is a sickness start date in column R
If CurrentWeek.Cells(I, 18) <> "" Then
'Check if they have entered 'Still Away' or left the cell blank in column S
If CurrentWeek.Cells(I, 19) = "Still Away" Or CurrentWeek.Cells(I, 19) = "" Then
Dim EmployeeNumber As String
Dim SicknessStart As String
EmployeeNumber = Cells(I, 3)
SicknessStart = Cells(I, 18)
NextWeek.Select
'Find the employee number string on the following week's tab and enter sickness start date
Columns(3).Find(What:=EmployeeNumber, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Offset(0, 15) = SicknessStart
End If
End If
I = I + 1
Loop
CopySickness = True
End Sub