|
こんにちは。
<仕様>
Excelファイルが2つあります。
一方は「勤務予定表」で、他方の内容に応じてかき換えたいファイルです。
A3に「社員コード」と入っています。
H3に「1」と入っています。右にむかって日が進み、長の月だとAL3列に「31」と入っています。
5行目以降にレコードが入っています。A列には社員コードがaa0001などと入っています。
レコード部分は出勤情報である「休み」「前休」「慶弔休」などと入っています。
他方は「変更内容」で、一方を書き換えたい社員のみの出勤情報が載っています。
B列に「社員コード」、D列に「日付 アンダースコア 出勤情報」が入っています。
<規則性>
たとえば
「変更内容」のB2にaa0001、D2に「1日_休み」とあったら
「勤務予定表」のaa0001の行のH列に「休み」と書き換えたいのです。
「変更内容」のB3にdd0001、D3に「10日_前休」とあったら
「勤務予定表」のdd0002の行のQ列に「前休」と書き換えたいのです。
「変更内容」のB4にee0001、D4に「10日_慶弔休」とあったら
「勤務予定表」のee0005の行のQ列に「慶弔休」と書き換えたいのです。
下記のような骨子をかんがえました。(まだプログラムになっていません。)
Sub Macro2()
Dim E As Long
Dim R As Variant
Dim V As Long
Dim W As Long
Dim S As Long
Dim T As Long
Windows("変更内容.xls").Activate
Range("B2").Select
Range(Selection.Selection.End(xlDown)).Select
R = Selection.End(xlDown)
V = Selection.Value
For E = 2 To R
Windows("勤務予定表.xls").Activate
For T = 1 To 31
W = Selection.Value
If V = W Then
' 勤務予定表.xlsを変更内容.xls"でかきかえる。
ActiveCell.Paste
Else
Windows("変更内容.xls").Activate
Range(T & R).Select
S = Range(T & R).Value
Range(Selection.Selection.End(xlToRight)).Select
End If
Next
T = T + 1
Next
E = E + 1
End Sub
このような場合Forでループさせるのがいいのか自信がありません。
もっとよいループのさせかたがあったらどうかご教示ください。
|
|