ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Discussion (Misc queries) (https://www.excelbanter.com/excel-discussion-misc-queries/)
-   -   Worksheet SelectionChange Event (https://www.excelbanter.com/excel-discussion-misc-queries/87404-worksheet-selectionchange-event.html)

mjack003

Worksheet SelectionChange Event
 

Hi,

I have this code here for a selectionchange event on one of my
worksheets.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range(Cells(Target.Row, 4), _
Cells(Target.Row + Target.Rows.Count - 1, 30)).Select
End Sub

This works great as long as the range I want is contiguous. How would
I go about changing this code to only keep selected rows if the user
holds the CTRL key and selects random rows? I don't know if this is
even possible but I've played with the intersect method and this
doesn't seem to be a solution.
Any input is appreciated.

Thanks,
Mjack


--
mjack003
------------------------------------------------------------------------
mjack003's Profile: http://www.excelforum.com/member.php...fo&userid=5141
View this thread: http://www.excelforum.com/showthread...hreadid=539927


Ardus Petus

Worksheet SelectionChange Event
 
Try following code.

BTW: you forgot to disable events while you're changing selection in your
code!

HTH
--
AP

'----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rArea As Range
Dim r1 As Range
Dim rSelect As Range
Application.EnableEvents = False
For Each rArea In Target.Areas
Set r1 = Range( _
Cells(rArea.Row, "D"), _
Cells(rArea.Row + rArea.Rows.Count - 1, "AD") _
)
If rSelect Is Nothing Then
Set rSelect = r1
Else
Set rSelect = Union(rSelect, r1)
End If
Next rArea
rSelect.Select
Application.EnableEvents = True
End Sub
'----------------------------------
"mjack003" a écrit
dans le message de news:
...

Hi,

I have this code here for a selectionchange event on one of my
worksheets.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range(Cells(Target.Row, 4), _
Cells(Target.Row + Target.Rows.Count - 1, 30)).Select
End Sub

This works great as long as the range I want is contiguous. How would
I go about changing this code to only keep selected rows if the user
holds the CTRL key and selects random rows? I don't know if this is
even possible but I've played with the intersect method and this
doesn't seem to be a solution.
Any input is appreciated.

Thanks,
Mjack


--
mjack003
------------------------------------------------------------------------
mjack003's Profile:
http://www.excelforum.com/member.php...fo&userid=5141
View this thread: http://www.excelforum.com/showthread...hreadid=539927




mjack003

Worksheet SelectionChange Event
 

Thanks Ardus. Didn't even think about that...ingenious! :) One problem
though...the user is selecting from a very long list. Haven't really
put any thought into this yet but is there anyway to keep the screen
from centering to the intial selection...which distracts the user and
causes them to lose how far down the list they had scrolled. Thank you
for the quick response.

Mjack


--
mjack003
------------------------------------------------------------------------
mjack003's Profile: http://www.excelforum.com/member.php...fo&userid=5141
View this thread: http://www.excelforum.com/showthread...hreadid=539927



All times are GMT +1. The time now is 07:10 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com