Methodenaufruf mit Range-Objekt?

27/09/2007 - 18:14 von eoleo.ftp | Report spam
Hallo Ng,

In einer Anwendung mit zahlreichen Arbeitsblàttern soll bei Klick auf
eine Zelle eine Eingabeprüfung o.à. stattfinden.
Um sicherzustellen, dass nur eine Zelle vom Benutzer markiert wurde,
dient mir folgender Code.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Sicherstellen, dass nur eine Zelle markiert wurde
Dim iCounter As Integer
For Each c In Range(Target.Address(0, 0))
iCounter = iCounter + 1
Next c
If iCounter > 1 Then
Exit Sub
End If
End Sub

Um nicht in jedes Arbeitsballt diese acht Zeilen Code kopieren zu
müssen, sonder idealerweise jeweils nur einen Einzeiler, würde ich
gerne an meine globale Eingabeüberprüfungs-Methode nur das Range-
Objekt übergeben, um dann innerhalb der Methode prüfen zu können.

Frage: Wie muss die Übergabe aussehen?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
pruefe_Eingabe ????
End Sub

Besten Dank im voraus
Leo
 

Lesen sie die antworten

#1 Thomas Ramel
27/09/2007 - 19:34 | Warnen spam
Grüezi Leo

schrieb am 27.09.2007

In einer Anwendung mit zahlreichen Arbeitsblàttern soll bei Klick auf
eine Zelle eine Eingabeprüfung o.à. stattfinden.
Um sicherzustellen, dass nur eine Zelle vom Benutzer markiert wurde,
dient mir folgender Code.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Sicherstellen, dass nur eine Zelle markiert wurde
Dim iCounter As Integer
For Each c In Range(Target.Address(0, 0))
iCounter = iCounter + 1
Next c
If iCounter > 1 Then
Exit Sub
End If
End Sub

Um nicht in jedes Arbeitsballt diese acht Zeilen Code kopieren zu
müssen, sonder idealerweise jeweils nur einen Einzeiler, würde ich
gerne an meine globale Eingabeüberprüfungs-Methode nur das Range-
Objekt übergeben, um dann innerhalb der Methode prüfen zu können.

Frage: Wie muss die Übergabe aussehen?



IMO brauchst Du keine eigene Funktion dafür, sondern kannst mit einem
Einzeiler gleich innerhalb des SelectionChange-Ereignisses wie folgt prüfen
indem Du die .Count-Eigenschaft des Range-Objektes nutzt:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then
MsgBox "nur eine zelle ist markiert!"
End If
End Sub


Mit freundlichen Grüssen
Thomas Ramel

- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-2]
Microsoft Excel - Die ExpertenTipps

Ähnliche fragen