このような文にて、先にクリックしたセルに、次にクリックしたセルの内容をコピーさせています。
-----------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.MergeCells = False And Target.Count > 1 Then Exit Sub
On Error Resume Next '想定しないエラーを無視
If Target.Cells(1) = "" Then
If Intersect(Target, Range("C1:O1").EntireColumn) Is Nothing Then Exit Sub 'C~O列 コピー先
Set FrstCell = Target.Cells(1)
Else
If Target.Column <> 19 Then Exit Sub 'S列 コピー元
Target.Copy FrstCell.MergeArea
End If
On Error GoTo 0 'エラートラップ終了
End Sub
---------------------------------------
そこで、例えば同じシートモジュール内に、このような記述を2つして、
1つ目と、2つ目のコピー元とコピー先の列を別々に指定することは可能でしょうか?
「IF文のハシゴ」という言葉もヒントに試してもみたのですがうまくいきません。
たとえば、1つ目の文では、コピー元はA列、コピー先はC~E列に
2つ目の文ではコピー元はF列、コピー先はH~J列
というように指定できればと思っています。
また、この文を元に、コピー元とコピー先の範囲指定が、複数できれば、方法は問いません。
どうぞ、よろしくお願い申し上げます。
こんにちは。
作った本人が言うのもなんですが、このマクロは、あまりにも特殊すぎますね。未だに、使ってみて混乱します。(^^;正直なところ、もう投げ出してしまっているかと思っていましたが、使っていただいている以上はお答えしていかなくてはなりませんね。
この方法は、もうちょっとアイデアが必要な気がしてならないのです。なんとなく、洗練されていないのです。すっきりしないのです。今のところ、こんなレベルです。残念無念です。
それはともかく、前々回に、2つの使い分けがあったような気がしますが、このようにしてみたらいかがでしょうか。
'-------------------------------------------
Dim FrstCell As Range
Dim SecondCell As Range
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.MergeCells = False And Target.Count > 1 Then Exit Sub
On Error Resume Next '想定しないエラーを無視
If Target.Column >= 3 And Target.Column <= 5 Then 'C:Eコピー先
Set FrstCell = Target.Cells(1)
ElseIf Target.Column = 1 Then 'A:コピー元
If Target.Cells(1).Value = "" Then Exit Sub
Target.Copy FrstCell.MergeArea
ElseIf Target.Column >= 8 And Target.Column <= 10 Then 'H:Jコピー先
Set SecondCell = Target.Cells(1)
ElseIf Target.Column = 6 Then 'F:コピー先
If Target.Cells(1).Value = "" Then Exit Sub
Target.Copy SecondCell.MergeArea
End If
On Error GoTo 0 'エラートラップ終了
End Sub
お礼
Wendy02 さま うまくいきました!ありがとうございます! たびたびのご回答また、このマクロを考えていただきまして感謝しております。 「洗練されていないのです」とのことですが 私のところで立派に業務に貢献しております。 マクロ初心者 orz で、質問しかできない状況ですので、ご回答は本当にありがたいです。 これらを参考に 私も、自分で思うようにマクロが書けるように努力していきます。 本当にありがとうございます。 これからも質問させていただくことが多々あると思いますが(泣)、なにとぞ、 よろしくお願い申し上げます。