|
▼ウッシ さん:
返事ありがとうございます。
もう少しお付き合いお願いします。
>>>> If Target.Cells.Count > 1 Then
↑これがまずいですか
>>>複数セル選択時ですか?
はい複数セルの選択で"D4:F4"です。
>なぜ、複数セルにしてるのでしょうか?
セル幅の関係からなのですが
>
>複数セル「A1:D4」を選択すると処理が続行されて、
↑"A1:D4"ではなく→"D4:F4"です
この意味がよくわからないのですが
"A1:D4"の結合セルだと問題があるということでしょうか?
>>Intersect(Target, Range("D4:F4"))
>を通過して、「ActiveCell」=「A1」に「ListBox1.Value」がセットされちゃいます。下記コードで良くないですか。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then
On Error Resume Next
If Not Intersect(Target, Range("D4:F4")) Is Nothing Then
UserForm1.Show vbModeless
Else
UserForm1.Hide
End If
End If
End Sub
理解してないようですみません
>それでいいのでしょうか?
>
>選択した複数セルそれぞれに別処理するなら勿論コード変更は必要ですし、
>>Intersect(Target, Range("D4:F4"))
>で取得出来る、「D4:F4」に属するセルだけを処理対象にするコードも必要です。
>
>>★.Parentとはヘルプ見ましたがよくわかりません
>親オブジェクトで、「ActiveCell」のあるシートの事です。
>もし、別シートのセルに値をセットするなら、
>
>>Set s = .Parent
>を
>>Set s = WorkSheets("Sheet1")
>のようにします。
↑これはよく解りましたありがとうございました。
>
>>> Set r = s.Range(s.Range("AG2"), s.Range("AG2").End(xlDown))
>> ↑AM最終列でなくていいのですか
>リストにセットしたデータで行位置を取得するだけです。
>
>>> i = ListBox1.ListIndex + 1
>リストの一番目が選択されてると「ListIndex」は「0」なのでプラス1します。
>
>>> s.Range("E6").Value = r(i, 2)
>>> s.Range("E7").Value = r(i, 3)
>>> s.Range("E8").Value = r(i, 4)
>>> s.Range("G6").Value = r(i, 5)
>>> s.Range("G7").Value = r(i, 6)
>>> s.Range("G8").Value = r(i, 7)
>> ↑★この意味は
>rはリストにセットしたデータなので、それの「i」番目(行目)で、横に「2〜7」列目
>のデータっていう意味です。
↑ココもわかりました。
|
|