Excel2003: Selektions-Kniffelei

14/10/2007 - 11:02 von Erich Jung | Report spam
Hallo zusammen,

ich knabbere wieder mal an einer Aufagbe die ich nicht so recht in den Griff
bekomme.
Vielleicht hat von Euch jemand eine Idde zu meinem Problem.

Mein Ziel ist es wenn eine Zelle markiert wird dass jeweils die Zelle
rechts oder links
von dieser Zelle auch markiert wird (abhàngig in welcher Spalte ich mich
befinde). Das klappt auch.

Ich möchte aber noch drei Fàlle abfangen:
1. Abbruch mit Fehlermeldung wenn die ausgewàhlte Zelle leer ist.
2. Wenn mehrere Zellen in untereinanderliegenden Zeilen markiert sind sollen
nur die Zellen
mit Inhalt + die rechte oder linke Zelle danaben, markiert werden. Also
nur Zellen mit Inhalt
sollen in der Selection erscheinen.

Folgendes Makro habe ich in einem Klassenmodul im Tabellenblatt:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
On Error GoTo ERRORHANDLER
Application.EnableEvents = False

'Ausgewàhlten Bereich prüfen ob alle Zellen einen Wert enthalten
'Auswahlbereich aufbereiten, leere Zellen aus Selection entfernen
FirstRow = Selection.Cells(1, 0).Row
FirstCol = Selection.Cells(1, 1).Column
LastCol = Selection.Cells(0, 0).Column + Selection.Columns.Count
FilledRows = Selection.Rows.Count
Range(Cells(FirstRow, FirstCol), Cells(FirstRow + (FilledRows - 1),
LastCol)).Select

If (Target.Column = 10) And (Target.Column <= 11) And (Target.Row >= 12)
And (Target.Row <= 33) Then
AnzColumn = Selection.Columns.Count
If AnzColumn = 1 Then
Range(Target, Target.Offset(0, 1)).Select
ElseIf AnzColumn >= 1 Then
Range(Target).Select
End If
ElseIf (Target.Column <= 11) And (Target.Column >= 10) And (Target.Row >=
12) And (Target.Row <= 33) Then
Range(Target, Target.Offset(0, -1)).Select
End If
ERRORHANDLER:
Application.EnableEvents = True
End Sub


Vielen Dank im Voraus.

Schönen Sonntag und Gruss
Erich
 

Lesen sie die antworten

#1 {Boris}
14/10/2007 - 13:56 | Warnen spam
Hi Erich,

On 14 Okt., 11:02, "Erich Jung" wrote:

Mein Ziel ist es wenn eine Zelle markiert wird dass jeweils die Zelle
rechts oder links
von dieser Zelle auch markiert wird (abhàngig in welcher Spalte ich mich
befinde). Das klappt auch.

Ich möchte aber noch drei Fàlle abfangen:
1. Abbruch mit Fehlermeldung wenn die ausgewàhlte Zelle leer ist.
2. Wenn mehrere Zellen in untereinanderliegenden Zeilen markiert sind sollen
nur die Zellen
mit Inhalt + die rechte oder linke Zelle danaben, markiert werden. Also
nur Zellen mit Inhalt
sollen in der Selection erscheinen.

Folgendes Makro habe ich in einem Klassenmodul im Tabellenblatt:



[Code gesnippt]

Hier mal ein ganz allgemeines Beispiel. Wenn es sich in der zu
überprüfenden Spalte um *Konstanten* (keine Formeln!) handelt, dann
teste das mal. Es wird Spalte C überwacht und bei entsprechende
Selektion werden die Zellen mit Konstanten incl. ihrer Nachbarzellen
selektiert:

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngNew As Range
On Error GoTo Uups
With Target
If .Column = 3 Then 'nur auf Spalte C bezogen
Application.EnableEvents = False
If .Count > 1 Then
Set rngNew = .SpecialCells(xlCellTypeConstants)
If Not rngNew Is Nothing Then
With rngNew
Union(.Offset(0, -1), .Offset(0, 1), rngNew).Select
End With
End If
Else
.Offset(0, -1).Resize(1, 3).Select
End If
End If
End With
Uups:
Application.EnableEvents = True
End Sub

Grüße Boris

Ähnliche fragen