Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VBA Excel2007: Application.Intersect-Methode

90 views
Skip to first unread message

Reinhard Schüll

unread,
Feb 14, 2010, 9:35:32 AM2/14/10
to
Hallo NG,

ich m�chte die Intersect-Methode in dem Worksheet_SelectionChange - Ereignis
so einsetzen, dass ich f�r verschiedene einzelne Zellen ein bestimmtes
Ereignis (Sub-Routine) aufrufen kann.
Momentan gelingt mir das nur f�r eine Zelle. Die Excelhilfe liefert mir kein
Beispiel, wie es mit mehr als zwei Argumenten funktioniert.
Also momentan helfe ich mir so:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set Zelle = Intersect(Target, Range("A2"))
If Not Zelle Is Nothing Then 'Doppelte Verneinung als Ist Wahr
weiterx
Exit Sub
Else
weitery
End If
Set Zelle = Intersect(Target, Range("C3"))
If Not Zelle Is Nothing Then 'Doppelte Verneinung als Ist Wahr
weiterx
Exit Sub
Else
weitery
End If

'evt. noch weitere Zellen in der Auswahl

End Sub

Hat jemand eine Idee wie es eleganter geht?

Gru�
Reinhard

Claus Busch

unread,
Feb 14, 2010, 9:57:24 AM2/14/10
to
Hallo Reinhard,

Am Sun, 14 Feb 2010 15:35:32 +0100 schrieb Reinhard Sch�ll:

> ich m�chte die Intersect-Methode in dem Worksheet_SelectionChange - Ereignis
> so einsetzen, dass ich f�r verschiedene einzelne Zellen ein bestimmtes
> Ereignis (Sub-Routine) aufrufen kann.
> Momentan gelingt mir das nur f�r eine Zelle. Die Excelhilfe liefert mir kein
> Beispiel, wie es mit mehr als zwei Argumenten funktioniert.
> Also momentan helfe ich mir so:

probiere es mit Select Case:
Select Case Target.Address(0, 0)
Case "A2"
weiterx
Case "C3"
weitery
End Select


Mit freundlichen Gr�ssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2

Reinhard Schüll

unread,
Feb 14, 2010, 12:41:54 PM2/14/10
to
Hallo Claus,

wunderbar ... es geht noch k�rzer:
Select Case Target.Address(0, 0)
Case "A2", "C3", "D5"
weiterx
Case Else
weitery
End Select

Was ich jetzt noch br�uchte w�re, das Ereignis z.B. weiterx dann
auszuf�hren, wenn z.B. eine Zelle in einer Spalte ausgew�hlt wird.
Also z.B. die Zelle "F123" in "F:F". Leider funktioniert Case "F*" nicht
;-). Oder anders gefragt, wie stelle ich fest, dass "F123" eine Teilmenge
von "F:F" ist?

MfG
Reinhard


Claus Busch

unread,
Feb 14, 2010, 12:51:17 PM2/14/10
to
Hallo Reinhard,

Am Sun, 14 Feb 2010 18:41:54 +0100 schrieb Reinhard Sch�ll:

> Was ich jetzt noch br�uchte w�re, das Ereignis z.B. weiterx dann
> auszuf�hren, wenn z.B. eine Zelle in einer Spalte ausgew�hlt wird.
> Also z.B. die Zelle "F123" in "F:F". Leider funktioniert Case "F*" nicht
> ;-). Oder anders gefragt, wie stelle ich fest, dass "F123" eine Teilmenge
> von "F:F" ist?

wenn es expizit F123 sein sollte, dann wieder �ber target.address. Wenn es
irgendeine Zelle in Spalte F sein soll, dann �ber
intersect(target,range("F:F"))

Claus Busch

unread,
Feb 14, 2010, 1:08:20 PM2/14/10
to
Hallo Reinhard,

Am Sun, 14 Feb 2010 18:41:54 +0100 schrieb Reinhard Sch�ll:

> Was ich jetzt noch br�uchte w�re, das Ereignis z.B. weiterx dann
> auszuf�hren, wenn z.B. eine Zelle in einer Spalte ausgew�hlt wird.
> Also z.B. die Zelle "F123" in "F:F". Leider funktioniert Case "F*" nicht
> ;-). Oder anders gefragt, wie stelle ich fest, dass "F123" eine Teilmenge
> von "F:F" ist?

dann fasse doch alle Adressen zusammen:
If Not Intersect(Target, Range("A2,C3,D5,F:F")) _
Is Nothing Then
weiterx
Else
weitery
End If

Reinhard Schüll

unread,
Feb 14, 2010, 1:25:13 PM2/14/10
to
Hallo Claus,

ja, dann wieder mit der doppelten Verneinung usw.
Bin gerade auf einem anderen Weg erfolgreich geworden:

Set bigrange = Application.Union(Target, Range("F:F"))
If bigrange.Address(0, 0) = "F:F" Then weiterx else weitery
.... oder
Set bigrange = Application.Union(Target, Range("2:2"))
If bigrange.Address(0, 0) = "2:2" Then weiterx else weitery

.... f�r die Aktion der ausgew�hlten Zelle einer Zeile

MfG
Reinhard


"

0 new messages