|
独学で適当に作っているのでお恥ずかしいのですが…
以下の様なマクロを作成してみました。
1.A1〜A10のセルに1〜10の数字を入力。
2.セルB〜D、E〜G、H〜Jは"横方向に結合"されており、
3.例えばB1のセルを選択すると、そのセルには「1」が入力され、E4のセルを選択すると、
そのセルには「4」が入力されます。
4.更にH4のセルを選択すると、E4のセルに入力されていた「4」がH4のセルに移動する。
…という感じの処理をさせようとしています。
頑張って以下のマクロを書いてみたのですが、このマクロでは、
□例えばE2:E5(セルが結合されているので実際にはE2:G5?)のセルを選択した時、
選択セルの全てに「2」が入力されてしまいます。
これをそれぞれ「2」〜「5」を入力、又はE2セルに「2」のみ入力し、他のセルは変化
させないという風にするには、どうすれば良いでしょうか?
又、もし宜しければ、これ以外にもっとスマート(短い)なマクロがあればご教授
頂ければ…等と思います。
※セルが結合されていなければうまく動作するのですが、どうしても結合された
状態で処理しなければならず、質問しております。
-------------------------------------------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim a, b, i, j
With Target
For i = 1 To 10
If ActiveCell.Address = "$B$" & i Then
a = "$B$": b = 3
ElseIf ActiveCell.Address = "$E$" & i Then
a = "$E$": b = 6
ElseIf ActiveCell.Address = "$H$" & i Then
a = "$H$": b = 9
End If
For j = 5 To 8 Step 3
If Cells(i, j) <> "" Then Exit For
Next j
If b = j Then End
If ActiveCell.Address = a & i Then
If Cells(i, j).Value <> "" Then
.Value = Cells(i, j).Value
Else
.Value = Cells(i, 1).Value: End
End If
If ActiveCell.Address <> "$B$" & i Then
Cells(i, j).FormulaR1C1 = ""
End If
Exit For
End If
Next i
End With
End Sub
|
|