Microsoft Excel

Herbers Excel/VBA-Archiv

Worksheet_SelectionChange

Betrifft: Worksheet_SelectionChange von: Sonnenpeter
Geschrieben am: 07.11.2007 18:50:00

Hallo,

ich habe mir mit Unterstützung des Forums nachfolgendes Makro aufgebaut funzt einwandfrei :-)


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("$B$5:$B$49")) Is Nothing Then
    Me.Shapes("Listenfeld1").Visible = False
Else
    Me.Shapes("Listenfeld1").Visible = True
    MeldungListenfeld1
    position_Listenfeld1
End If

If Intersect(Target, Range("$C$5:$C$49")) Is Nothing Then
    Me.Shapes("Listenfeld2").Visible = False
Else
    Me.Shapes("Listenfeld2").Visible = True
    MeldungListenfeld2
    position_Listenfeld2
End If
End Sub



Nun zu meinen Problem:
Wenn ich zellen im Bereich B und C gleichzeitig makiere erschein eines der oben genannten Listenfelder (je nach dem ob ich mit einer B- oder C-Zelle beginne).
Das sollte nach möglichkeit nicht geschehen.

Der nachfolgende von mir gebastelte Zusatz
If Intersect(Target, Columns("B:C")) Is Nothing Then
Me.Shapes("Listenfeld1").Visible = False
Me.Shapes("Listenfeld2").Visible = False

End If

gibt zwar keine Fehlermeldung funktioniert aber auch nicht.

Wie kann ich das Einblenden der Listenfelder verhindern wenn Zellen im Bereich B unb C gleichzeitig makiert sind.

Gruß Sonnenpeter

  

Betrifft: AW: Worksheet_SelectionChange von: Tino
Geschrieben am: 07.11.2007 19:34:21

Hallo,
versuche es mal mit dieser Lösung.

Dim isect1, isect2 As Object
Set isect1 = Application.Intersect(Target, Range("A:A"))
Set isect2 = Application.Intersect(Target, Range("C:IV"))
If isect1 Is Nothing And isect2 Is Nothing Then
        Me.Shapes("Listenfeld1").Visible = False
        Me.Shapes("Listenfeld2").Visible = False
    Else
        If Intersect(Target, Range("$B$5:$B$49")) Is Nothing Then
            Me.Shapes("Listenfeld1").Visible = False
        Else
            Me.Shapes("Listenfeld1").Visible = True
            MeldungListenfeld1
            position_Listenfeld1
        End If
        
        If Intersect(Target, Range("$C$5:$C$49")) Is Nothing Then
            Me.Shapes("Listenfeld2").Visible = False
        Else
            Me.Shapes("Listenfeld2").Visible = True
            MeldungListenfeld2
            position_Listenfeld2
        End If
End If



Gruss
Tino


  

Betrifft: AW: Worksheet_SelectionChange von: Sonnenpeter
Geschrieben am: 07.11.2007 19:56:28

Hallo Tino,

funktioniert leider nicht.

Listenfeld1 wird gar nicht gezeigt.

Wenn ich B und C wähle erscheint Listenfeld2


Trotzdem Danke für die Hilfestellung!

Gruß Sonnenpeter


  

Betrifft: AW: Worksheet_SelectionChange von: Erich G.
Geschrieben am: 07.11.2007 20:32:53

Hallo Sonnenpeter,
versuch mal

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If Intersect(Target, Columns(2)) Is Nothing Or _
      Intersect(Target, Columns(3)) Is Nothing Then
      If Intersect(Target, Range("$B$5:$B$49")) Is Nothing Then
         Me.Shapes("Listenfeld1").Visible = False
      Else
         Me.Shapes("Listenfeld1").Visible = True
         MeldungListenfeld1
         position_Listenfeld1
      End If

      If Intersect(Target, Range("$C$5:$C$49")) Is Nothing Then
         Me.Shapes("Listenfeld2").Visible = False
      Else
         Me.Shapes("Listenfeld2").Visible = True
         MeldungListenfeld2
         position_Listenfeld2
      End If
   Else
      Me.Shapes("Listenfeld1").Visible = False
      Me.Shapes("Listenfeld2").Visible = False
   End If
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: Das war es.............. von: Sonnenpeter
Geschrieben am: 07.11.2007 20:39:32

Hallo Erich,

das funktioniert :-)

Recht herzlichen Dank / Sonnenpeter