Discussion:
VBA Excel2007: Application.Intersect-Methode
(zu alt für eine Antwort)
Reinhard Schüll
2010-02-14 14:35:32 UTC
Permalink
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
2010-02-14 14:57:24 UTC
Permalink
Hallo Reinhard,
Post by 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.
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
2010-02-14 17:41:54 UTC
Permalink
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
2010-02-14 17:51:17 UTC
Permalink
Hallo Reinhard,
Post by 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"))



Mit freundlichen Grüssen
Claus Busch
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
Reinhard Schüll
2010-02-14 18:25:13 UTC
Permalink
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


"

Claus Busch
2010-02-14 18:08:20 UTC
Permalink
Hallo Reinhard,
Post by 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


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