| 
    
     |  | > 1.A1〜A10のセルに1〜10の数字を入力。 > 2.セルB〜D、E〜G、H〜Jは"横方向に結合"されており、
 > 3.例えばB1のセルを選択すると、そのセルには「1」が入力され、E4のセルを選択すると、
 >  そのセルには「4」が入力されます。
 > 4.更にH4のセルを選択すると、E4のセルに入力されていた「4」がH4のセルに移動する。
 >
 > …という感じの処理をさせようとしています。
 
 1〜2は、マクロでの処理ではなくて、マクロを実行する段階でのシートの状態ですよね。
 
 3で、 いきなり「例えば」と言われても、B1とE4を選択したときの処理しか解りません。それ以外のセルを選択したときはどういう処理をしたいのかが全然解りません。
 入力される値が定数なのであれば、わざわざマクロで処理する必要はないと思いますけど。
 
 もっと解りやすい説明をしましょう。
 
 ということで、何をしたいのかがよく解っていない状態ですが、
 
 > □例えばE2:E5(セルが結合されているので実際にはE2:G5?)のセルを選択した時、
 > 選択セルの全てに「2」が入力されてしまいます。
 
 に対しての回答をします。
 
 >  .Value = Cells(i, 1).Value: End
 
 の部分で2を入力しているわけですが、.Value は Target.Value で、選択範囲すべてのセルの値のことになります。
 それに対し、Cells(i, 1).Valueは、1つのセルの値=1つの値になります。
 ということで、複数のセルに同じ1つの値が入って当然、というわけですね。
 
 やりたいことを実現するためには、
 .Value = Cells(i, 1).Resize(.Count).Value
 とすれば良いです。
 
 
 |  |