| 
    
     |  | こんにちは。かみちゃん です。 
 >>Worksheets("データ")の「経験年数」は、F列ですか?
 >>質問文とシートレイアウトが違うような気がします。
 >
 >Worksheets("データ")は一列のデータとなっていますので、F列です。
 
 すみません、聞き方を間違えました。
 
 >>Worksheets("名簿")のB列に入力した値とWorksheets("データ")のA列の値を比較
 >>
 >>Worksheets("データ")
 >>  A  B  C  D   E     F
 >>1  氏名     雇入年月日 経験年数
 >>2
 >>3
 
 「データ」シートの「氏名」がA列ではなく、B列のような気がしていまして、
 .Resize(, 4).Value = Ws.Cells(x, 2).Resize(, 4).Value
 というコードが「データ」シートのB列から横方向に4列分の値を設定しているような気がします。
 特に、
 .Resize(, 4).Value
 は、「名簿」シートのB列から横方向に4列に値を設定しようとしていますが、
 大丈夫ですか?
 .Offset(, 1).Resize(, 4).Value
 でもなさそうですし、
 .Offset(, 1).Resize(, 3).Value = Ws.Cells(x, 3).Resize(, 3).Value
 なのでしょうか?
 
 >Worksheets("データ")のE2 → Worksheets("名簿")のE3.E4結合セルに
 >Worksheets("データ")のF2 → Worksheets("名簿")のE5.E6結合セルに
 >
 >作業員名簿の 表は4行 で データは1行 でと言う事です。
 
 これを解決するたには、
 .Offset(2, 3).Value = Ws.Cells(x, 6).Value
 というコードを
 .Offset(, 3).MergeArea.Offset(1).Value = Ws.Cells(x, 6).Value
 にしてみてください。
 
 今回は、仕方なく結合セルを使いたいとのことですが、
 結合セルとVBAの相性は悪いため、なるべくなら、使わないほうがいいかと思います。
 
 |  |