Microsoft Excel

Herbers Excel/VBA-Archiv

Excel - Ergänzung

Betrifft: Excel - Ergänzung von: tigub
Geschrieben am: 18.11.2014 10:52:20

Hallo zusammen

Nun hab ich gegoogelt und bin fündig geworden...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     Dim rngGeltungsBereich As Range
     Set rngGeltungsBereich = Union(Range("A22"), Range("A22"))
     If Not Intersect(Target, rngGeltungsBereich) Is Nothing And Target.Count = 1 Then
         Target.Value = "X"
     End If
     Set rngGeltungsBereich = Nothing
 End Sub
Doch stört mich daran, das beim verschieben (Zellmarkierung), Pfeil auf, ab, links, rechts,
die genannte Zelle auch markiert wird...

Frage an Euch: Weiss jemand wie ich es ändern muss, dass es wirklich nur auf klick in die Zelle A22 ändert?

Vielen Dank für die Hilfe...

tigub

  

Betrifft: AW: Excel - Ergänzung von: Hajo_Zi
Geschrieben am: 18.11.2014 10:55:38

if Target.address="$A$22" then

GrußformelHomepage


  

Betrifft: AW: Excel - Ergänzung von: tigub
Geschrieben am: 18.11.2014 11:50:07

Hallo Hajo_Zi
An welcher Position müsste ich

if Target.address="$A$22" then

einfügen?
Vielen Dank
tigub


  

Betrifft: AW: Excel - Ergänzung von: fcs
Geschrieben am: 18.11.2014 11:10:07

Hallo tigub,

wenn die Zellselektion per Pfeiltasten etc. kein "X" setzen soll, dann musst du für das Eintragen eines "X" ein anderes Maus-Ereignis wählen, z.B.: Maus-Linke-Taste-Doppelklick oder Maus-Rechte-Taste-Klick.

Die entsprechenden Makros sehen dann wie folgt aus, wobei der Zellinhalt zwischen X und kein Inhalt umgeschaltet wird.

Gruß
Franz

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     Dim rngGeltungsBereich As Range
     Set rngGeltungsBereich = Union(Range("A22"), Range("A22"))
     If Not Intersect(Target, rngGeltungsBereich) Is Nothing And Target.Count = 1 Then
         If Target.Value = "X" Then
            Target.ClearContents
         Else
            Target.Value = "X"
         End If
         Cancel = True
     End If
     Set rngGeltungsBereich = Nothing
End Sub

'oder

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
     Dim rngGeltungsBereich As Range
     Set rngGeltungsBereich = Union(Range("A22"), Range("A22"))
     If Not Intersect(Target, rngGeltungsBereich) Is Nothing And Target.Count = 1 Then
         If Target.Value = "X" Then
            Target.ClearContents
         Else
            Target.Value = "X"
         End If
         Cancel = True
     End If
     Set rngGeltungsBereich = Nothing
End Sub



  

Betrifft: AW: Excel - Ergänzung von: tigub
Geschrieben am: 18.11.2014 11:25:50

Hallo zusammen

Vielen Dank für die Tip.
Nur eine Frage, das mit dem "X" und kein "X" das lässt sich nicht beheben?
tigub


  

Betrifft: AW: Excel - Ergänzung von: tigub
Geschrieben am: 18.11.2014 11:39:21

Hallo zusammen

Vielen Dank für die Tip.
Nur eine Frage, das mit dem "X" und kein "X" das lässt sich nicht beheben?
tigub


  

Betrifft: was meinst Du damit ? von: Matthias L
Geschrieben am: 18.11.2014 11:50:28

Hallo

Zitat:
Nur eine Frage, das mit dem "X" und kein "X" das lässt sich nicht beheben?

Was meinst Du damit?

Gruß Matthias


  

Betrifft: AW: was meinst Du damit ? von: tigub
Geschrieben am: 18.11.2014 12:01:56

Hallo Matthias L

In einer Antwort von Franz wird eben von linke Maustaste klick = "X"
und wieder klick verschwindet das "X" wieder...
Und dies möchte ich behoben haben,
sofern das überhaupt geht...
tigub

Siehe unten:


Hallo tigub,

wenn die Zellselektion per Pfeiltasten etc. kein "X" setzen soll, dann musst du für das Eintragen eines "X" ein anderes Maus-Ereignis wählen, z.B.: Maus-Linke-Taste-Doppelklick oder Maus-Rechte-Taste-Klick.

Die entsprechenden Makros sehen dann wie folgt aus, wobei der Zellinhalt zwischen X und kein Inhalt umgeschaltet wird.

Gruß
Franz

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     Dim rngGeltungsBereich As Range
     Set rngGeltungsBereich = Union(Range("A22"), Range("A22"))
     If Not Intersect(Target, rngGeltungsBereich) Is Nothing And Target.Count = 1 Then
         If Target.Value = "X" Then
            Target.ClearContents
         Else
            Target.Value = "X"
         End If
         Cancel = True
     End If
     Set rngGeltungsBereich = Nothing
End Sub
'oder
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
     Dim rngGeltungsBereich As Range
     Set rngGeltungsBereich = Union(Range("A22"), Range("A22"))
     If Not Intersect(Target, rngGeltungsBereich) Is Nothing And Target.Count = 1 Then
         If Target.Value = "X" Then
            Target.ClearContents
         Else
            Target.Value = "X"
         End If
         Cancel = True
     End If
     Set rngGeltungsBereich = Nothing
End Sub



  

Betrifft: einfach Target.Value = "X" von: Matthias L
Geschrieben am: 18.11.2014 12:07:17

Hallo

Franz hat geschrieben:
Maus-Linke-Taste-Doppelklick

Du brauchst doch nur diesen Teil ersetzen:

         If Target.Value = "X" Then
            Target.ClearContents
         Else
            Target.Value = "X"
         End If
durch
Target.Value = "X"
Das war doch nur ein Vorschlag von Franz

Gruß Matthias


  

Betrifft: dann benutz den Doppeklick von: Matthias L
Geschrieben am: 18.11.2014 11:14:07

Hallo

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Target.Address = Range("A22").Address Then Target = "X"
End Sub
Was Du mit Union(...) bezweckst bei nur einer Zelle ist mir rätselhaft

Gruß Matthias


  

Betrifft: AW: dann benutz den Doppeklick von: tigub
Geschrieben am: 18.11.2014 11:56:11

Hallo Matthias L

Das werden schlussendlich schon mehrere Zellen doch ist ihr Ziel immer wo anders

z.B. 1. klick auf A1 = Änderung in A5
2. klick auf B1 = Änderung in A20
etc.
Aber erst muss ich mal das eine zum laufen bringen dann kommt dann das nächste..

tigub


  

Betrifft: AW: Excel - Ergänzung von: tigub
Geschrieben am: 18.11.2014 16:53:44

Danke Allen, die mir geholfen haben...
So funktioniert's recht gut...
Supi...

Vielen Dank


tigub