飛び飛びに選択されたセルを処理するには?

Question 105.2 Excel VBA Borad (掲示板)より Previous Next
初心者です。大変勉強になってます。ありがとうございます。
一つ質問です。
Question 85.3の
一定のセルが選択されたときにそのセルの値をコピーするには? で、飛び飛びのセルを選択する場合のセルの指定方法が分かりません。
ご教授宜しくお願い致します。 初心者ですみません。
Answer   2012.12.20 永井善王

あなたが参考にされたマクロの機能をくわしく見てみると、
一定のセル範囲の中の1つのセルが選択されたときに、
そのセルの値を A1セルへ代入するようになっています。 コードは下記のとおりです。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    行 = Target.Row
    列 = Target.Column
    If (列 = 5 Or 列 = 7) And 行 <= 30 Then
        Range("A1").Value = Range(Target.Address).Value
    End If
End Sub
これに関する今回のご質問は、『飛び飛びのセルを選択する場合のセルの指定方法』ということですが、たとえば右図のように、
(1) E8セルをクリックしてから、
(2) [Ctrl]キーを押しながら G15セルをクリックすればよいのではありませんか?

あるいは、このように操作して選択した後で、上記の青字の処理のように、何か別の処理 をするようにマクロを改造したいのでしょうか?
もしもそうであるなら上記の青字のように、具体的に提示していただけませんか。
お待ちしています。
一定のセルを限定したいです
すみません初心者で質問の仕方が悪かったです。
「一定のセル範囲の中の1つのセルが選択されたときに、そのセルの値を A1セルへ代入するようになっています。」 で 「一定のセル範囲」というところがE列とかG列ではなく、「c1とc2とc3とd7とd8とd9とe10のそれぞれのセル」 と置き換える場合のセルの指定方法です。
まだ初心者でうまくいかなかったので宜しくお願い致します。
Answer   2012.12.22 永井善王
そのためのコードの書き方は色々あります。
7つのセルに限るなら下記のように分かりやすい書き方がいいかも知れません。 留意点としては、セル番号の英字は大文字を使います。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    選択 = Target.Address(RowAbsolute:=False, ColumnAbsolute:=False)
    If 選択 = "C1" Or 選択 = "C2" Or 選択 = "C3" _
    Or 選択 = "D7" Or 選択 = "D8" Or 選択 = "D9" Or 選択 = "E10" Then
        Range("A1").Value = Range(Target.Address).Value
    End If
End Sub
または、Question 85.3 のコードに倣って分かりやすく書くと、下記のようになるでしょう。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    行 = Target.Row
    列 = Target.Column
    If 列 = 3 And (行 = 1 Or 行 = 2 Or 行 = 3) Then
        Range("A1").Value = Range(Target.Address).Value
    ElseIf 列 = 4 And (行 = 7 Or 行 = 8 Or 行 = 9) Then
        Range("A1").Value = Range(Target.Address).Value
    ElseIf 列 = 5 And 行 = 10 Then
        Range("A1").Value = Range(Target.Address).Value
    End If
End Sub
では、根気よく解明してください。 ガンバ!
ありがとうございました
早速の回答ありがとうございます。大変参考になりました。
これからじっくり解読できるよう勉強致します。 誠に有り難うございます。

 

Excel VBA Macro