PDA

Vollständige Version anzeigen : Target as Range nur in zwei Spalten


Jan'89
02.09.2017, 11:54
Hallo,

ich habe einen VBA-Code in den weiten des Internets gefunden, den ich gerne in einer Tabelle von mir verwenden würde.
Leider schaffe ich es nicht, den VBA Code so zu ergänzen, dass dieser nur in den Spalten E und I angewendet wird.

Könnt Ihr mir weiterhelfen?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
Application.EnableEvents = False
Select Case Left(Target.Value, 1)
Case Chr(163): Target.Value = Chr(82): Target.Offset(0, 1).Select
Case Chr(82): Target.Value = Chr(163): Target.Offset(0, 1).Select
End Select
Application.EnableEvents = True
End Sub

LG Jan

Hajo_Zi
02.09.2017, 12:03
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If CallByName(Selection, IIf(Val( _
Application.Version) > 11, "CountLarge", "Count"), VbGet) = 1 Then
If Target.Column = 5 Or Target.Column = 9 Then
If Target.Value = "" Then Exit Sub
Application.EnableEvents = False
Select Case Left(Target.Value, 1)
Case Chr(163): Target.Value = Chr(82): Target.Offset(0, 1).Select
Case Chr(82): Target.Value = Chr(163): Target.Offset(0, 1).Select
End Select
Application.EnableEvents = True
End If
End If
End Sub


<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

Jan'89
02.09.2017, 12:37
Hallo Hajo,

vielen Dank :-)

Eine Frage habe ich doch noch.
Der VBA Code reagiert nicht nur auf die Maus sondern, auch wenn man mit den Pfeiltasten das Feld einfach "überqueren" möchte.
Kann man das auch noch irgendwie ändern?

LG Jan

Hasso
02.09.2017, 13:16
Hallo Jan,

leider ist nicht ganz klar, was du erreichen willst. Vielleicht wäre in deinem Fall Private Sub Worksheet_Change(ByVal Target As Range)besser geeignet als Private Sub Worksheet_SelectionChange(ByVal Target As Range).

Jan'89
02.09.2017, 16:59
Hallo Hasso,

das tut mir Leid. Zu meiner zweiten Frage fehlten wirklich noch ein paar erläuternde Worte.

Ich habe eine Tabelle in der die Spalten E und I eine Checkbox enthalten.
Diese Checkbox habe ich mit der Schriftart Wingdings2 "erstellt".
Durch den VBA Code ändert die Checkbox ihren Wert. Dieser Wert ändert sich jedoch nicht nur, wenn ich mit der Maus in die Checkbox klicke, sondern auch wenn ich mit den Pfeiltasten die Zelle "überquere".

Da die Checkbox nur in ~10% der Fällen am Ende angehakt wird, wäre es für mich deutlich besser, wenn diese nur wenn man mit der Maus drauf klickt ihren Wert ändert.

Ich habe mal eine Beispieldatei beigefügt.

LG Jan

Luschi
02.09.2017, 17:52
Hallo Jan,

nimm das DoppelKlick-Ereignis:Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If CallByName(Target, IIf(Val( _
Application.Version) > 11, "CountLarge", "Count"), VbGet) = 1 Then
If Target.Column = 5 Or Target.Column = 9 Then
If Target.Value = "" Then Exit Sub
Application.EnableEvents = False
Select Case Left(Target.Value, 1)
Case Chr(163): Target.Value = Chr(82)
Case Chr(82): Target.Value = Chr(163):
End Select
Target.Offset(0, 1).Select
Application.EnableEvents = True
End If
End If
End SubGruß von Luschi
aus klein-Paris

Jan'89
03.09.2017, 13:48
Hallo Luschi,

das hat funktioniert. Vielen Dank. :-)

LG Jan