SheetSelectionChange bei mergedCells

Bild

Betrifft: SheetSelectionChange bei mergedCells
von: Bernd
Geschrieben am: 28.06.2015 20:40:54

Hallo Gemeinde,
ich möchte erfassen, wenn der Cursor auf eine zusammengefasste Zelle kommt.
Leider reagiert das SheetSelectionChange-Event überhaupt nicht darauf.
Wie muss ich das machen?
Gruß,
Bernd

Bild

Betrifft: AW: SheetSelectionChange bei mergedCells
von: Sepp
Geschrieben am: 28.06.2015 20:43:11
Hallo Bernd,
zeig mal deinen Code, über welchen Bereich erstrecken sich die Verbundenen Zellen?

Gruß Sepp


Bild

Betrifft: AW: SheetSelectionChange bei mergedCells
von: Bernd
Geschrieben am: 28.06.2015 20:49:07


Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim P1%, P2%, Var$
If Sh.Type = 3 Then End
    
If IsNumeric(Left(Sh.Name, 4)) = True And _
   Right(Left(Sh.Name, 5), 1) = "(" And _
   Right(Sh.Name, 1) = ")" And _
   Worksheets(Sh.Name).Cells(28, 192).Interior.Pattern = xlGray25 Then
    P1 = Application.Find("(", Sh.Name, 1) 'Pos vom ersten /
    P2 = Application.Find(")", Sh.Name, P1 + 1) 'Pos vom zweiten /
    Farbe = Mid(Sh.Name, P1 + 1, P2 - 1 - P1)
    
    If AltRow = "" Then AltRow = GanzAltRow
    If AltColumn = "" Then AltColumn = GanzAltColumn
    AlterWert = ActiveSheet.Cells(Target.Row, Target.Column).Value
    
    If (Target.Column = 1 And Not (AltColumn = 2 And AltRow > 28)) Or _
    (Target.Column = 33 And Not (AltColumn = 32 Or AltColumn = 34)) Or _
    (Target.Row < 22 And (Target.Column = 63 Or Target.Column = 64) And Not (AltColumn = 62 Or  _
AltColumn = 66)) Or _
    (Target.Column = 65 And Not (AltColumn = 64 Or AltColumn = 66)) Or _
    (Target.Column = 97 And Not (AltColumn = 96 Or AltColumn = 98)) Or _
    (Target.Column = 129 And Not (AltColumn = 128 Or AltColumn = 130)) Or _
    (Target.Column = 161 And Not (AltColumn = 160 Or AltColumn = 162)) Then
        ActiveSheet.Cells(Target.Row, Target.Column + 1).Select
        End
    End If
           
    If (Target.Column = 33 And AltColumn = 34) Or _
    (Target.Column = 65 And AltColumn = 65) Or _
    (Target.Column = 97 And AltColumn = 98) Or _
    (Target.Column = 129 And AltColumn = 130) Or _
    (Target.Column = 161 And AltColumn = 162) Then
        ActiveSheet.Cells(Target.Row, Target.Column - 1).Select
        End
    End If
       
    If (Target.Row < 22 And (Target.Column = 65 And AltColumn = 66)) Then
        ActiveSheet.Cells(Target.Row, Target.Column - 3).Select
        End
    End If
       
    If (Target.Column = 33 And AltColumn = 32) Or _
    (Target.Row < 22 And (Target.Column = 63 Or Target.Column = 64) And (AltColumn = 62 Or  _
AltColumn = 63)) Or _
    (Target.Column = 65 And AltColumn = 64) Or _
    (Target.Column = 97 And AltColumn = 96) Or _
    (Target.Column = 129 And AltColumn = 128) Or _
    (Target.Column = 161 And AltColumn = 160) Then
        ActiveSheet.Cells(Target.Row, Target.Column + 1).Select
        End
    End If
    
    If Target.Column > 192 And Target.Row < 22 Then
        ActiveSheet.Cells(Target.Row + 24, 2).Select
        End
    End If
    
    If Target.Column > 192 And Target.Row > 22 Then
        ActiveSheet.Cells(Target.Row, Target.Column - 1).Select
        End
    End If
    
    If Target.Column = 1 And (Target.Row > 28 And Target.Row < 45) Then
        ActiveSheet.Cells(Target.Row - 24, 192).Select
        End
    End If
    
    If Target.Row < 5 Then
        ActiveSheet.Cells(5, Target.Column).Select
        End
    End If
    
    If (Target.Row = 22 Or Target.Row = 23) And AltRow > 22 Then
        ActiveSheet.Cells(21, Target.Column).Select
        End
    End If
    
    If (Target.Row = 22 Or Target.Row = 23) And AltRow < 22 Then
        ActiveSheet.Cells(29, Target.Column).Select
        End
    End If
    
    If Target.Row > 45 Then
        ActiveSheet.Cells(45, Target.Column).Select
        End
    End If
   
    If (Target.Row > 22 And Target.Row < 29) And Not (AltRow = 22 Or AltRow = 29) Then
        ActiveSheet.Cells(21, Target.Column).Select
        End
    End If
    
    If Target.Row < 29 And AltRow = 29 Then
        ActiveSheet.Cells(21, Target.Column).Select
        End
    End If
    
    If Target.Row > 22 And AltRow = 22 Then
        ActiveSheet.Cells(21, Target.Column).Select
        End
    End If
   
If Not Farbe = "Normal" Then
    If Target.Row = 14 And Not (AltRow > 12 And AltRow < 16) Then
        ActiveSheet.Cells(15, Target.Column).Select
        End
    End If
    
    If Target.Row = 14 And (AltRow = 13 Or AltRow = 14) Then
        ActiveSheet.Cells(15, Target.Column).Select
        End
    End If
    
    If Target.Row = 14 And AltRow = 15 Then
        ActiveSheet.Cells(13, Target.Column).Select
        End
    End If
    
    If Target.Row = 38 And Not (AltRow > 36 And AltRow < 40) Then
        ActiveSheet.Cells(39, Target.Column).Select
        End
    End If
    
    If Target.Row = 38 And (AltRow = 37 Or AltRow = 38) Then
        ActiveSheet.Cells(39, Target.Column).Select
        End
    End If
    
    If Target.Row = 38 And AltRow = 39 Then
        ActiveSheet.Cells(37, Target.Column).Select
        End
    End If
    
End If
Ausgang:
    
    GanzAltRow = AltRow
    GanzAltColumn = AltColumn
    AltRow = Target.Row
    AltColumn = Target.Column
    
End If
End Sub
Die verbundenen Zellen erstrecken sich von es sind insgesamt 12 verbundene Zellen:
A1:AF2
A25:AF26
AG1:BL2
AG25:AF26
BM1:CR2
BM25:CR26
CS1:DX2
CS25:DX26
DY1:FD2
DY25:FD26
FE1:GJ2
FE25:GJ26
Gruß,
Bernd

Bild

Betrifft: AW: SheetSelectionChange bei mergedCells
von: Sepp
Geschrieben am: 28.06.2015 21:04:54
Hallo Bernd,
bäh! gruselcode;-)
Da mag ich mich jetzt nicht einarbeiten, aber bei verbundenen Zellen werden immer alle Zellen in Target übergeben. Ich würde es mal versuchen mit


With Target(1,1)
  If .Column...
End With
Gruß Sepp


Bild

Betrifft: AW: SheetSelectionChange bei mergedCells
von: Bernd
Geschrieben am: 28.06.2015 21:17:43
Super, das klappt! (y)
Danke!!!

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zwei Spalten - Duplikate zwischen beiden finden"