Microsoft Excel

Herbers Excel/VBA-Archiv

Highlighten von mehreren Zellen | Herbers Excel-Forum


Betrifft: Highlighten von mehreren Zellen von: Peter Mayer
Geschrieben am: 24.01.2012 00:07:03

Hallo alle zusammen,

ich habe ein etwas vertracktes Problem:

Ich möchte gerne in einem teilweise geschützten Arbeitsblatt Teile einer Zeile highlighten, indem man auf eine beliebige ungeschützte Zelle in dieser Zeile klickt.

Als ersten Schritt habe ich einen Code für die gesamte Zeile ausprobiert:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static target_alt As String
Static index_alt As Integer
On Error Resume Next
Range(target_alt).EntireRow.Interior.ColorIndex = index_alt
index_alt= Target.Interior.ColorIndex
Rows(Target.Row).Interior.ColorIndex = 5
target_alt= Target.Address
End Sub


Das Problem bei diesem Code ist, dass er keine Zellen formatiert, welche eine bedingte Formatierung aufweisen. Außerdem funktioniert er nicht, wenn das Blatt geschützt ist. Wobei letzteres durch unprotect und protect umgangen werden könnte.

Für mich ist es jetzt notwendig, dass nur ein Teil der Zeile (z.B. B13 bis BB13) kurzzeitig eingefärbt oder anderweitig gehighlightes werden soll. Nach dem man schließlich in eine andere Zelle klickt, soll die ursprüngliche bedingte Formatierung der vorhergehenden Zeile wiederhergestellt werden.

Leider habe ich keine Ahnung wie ich meinen obigen Code anpassen kann. Könnt Ihr mir hier bitte auf die Sprünge helfen!

Danke schon mal im Voraus!
VG Peter

PS:

Dieser ganze Klimmzug ist nur deshalb notwendig, da viele, schmale Spalten editierbar sind und man leicht in der Zeile verrutschen kann.

  

Betrifft: AW: Highlighten von mehreren Zellen von: Josef Ehrensberger
Geschrieben am: 24.01.2012 00:18:45


Hallo Peter,

wieso nicht einfach so?

' **********************************************************************
' Modul: Tabelle4 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  On Error Resume Next
  Target.EntireRow.Select
  Target(1, 1).Activate
End Sub






« Gruß Sepp »



  

Betrifft: ein paar Varianten von: Josef Ehrensberger
Geschrieben am: 24.01.2012 00:56:46


Hallo Peter,

ein paar einfache Möglichkeiten.

https://www.herber.de/bbs/user/78572.xlsm




« Gruß Sepp »



  

Betrifft: DrawingObjects dürfen dabei aber nicht ... von: Luc:-?
Geschrieben am: 24.01.2012 04:30:24

…mitgeschützt sein, Sepp!
Gruß Luc :-?


  

Betrifft: AW: DrawingObjects dürfen dabei aber nicht ... von: Peter Mayer
Geschrieben am: 24.01.2012 14:29:54

Servus Sepp,

danke für die Anregungen, ich hab deinen Code ein wenig abgewandelt und erweitert und das Problem inzwischen so gelöst:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
On Error Resume Next

Dim PosOK As Single ' Position in Points
Dim PosLK As Single ' Position in Points
Dim PosRK As Single ' Position in Points
Dim acr As Integer
Dim shp As Shape
Dim ShapeName As String
Dim i As Integer

acr = ActiveCell.Row

PosOK = ThisWorkbook.ActiveSheet.Cells(acr, 2).Top
PosLK = ThisWorkbook.ActiveSheet.Cells(acr, 2).Left
PosRK = ThisWorkbook.ActiveSheet.Cells(acr, 34).Offset(0, 1).Left

ShapeName = "marker"
    For Each shp In ActiveSheet.Shapes
        If shp.Name = ShapeName Then
            i = 1
        Else
            i = i
        End If
    Next shp
    
    If i = 1 Then
            GoTo Ändern
    Else
            GoTo Erstellen
    End If

Erstellen:

With ActiveSheet.Shapes.AddShape(msoShapeRectangle, 1, 2, 1, 1)
    .Name = ShapeName
    .Visible = msoTrue
End With
GoTo Ändern


Ändern:

ActiveSheet.Shapes("marker").Fill.Visible = msoFalse
With ActiveSheet.Shapes("marker").Line
    .Weight = 2.5
    .ForeColor.RGB = RGB(0, 128, 0)
End With

With ThisWorkbook.ActiveSheet.Shapes("marker")
  .Left = PosLK
  .Top = PosOK
  .Height = Target(1, 1).Height
  .Width = PosRK - 16
End With

End Sub



  

Betrifft: Anmerkung von: Josef Ehrensberger
Geschrieben am: 24.01.2012 14:34:09


Hallo Peter,

in einem Tabellenmodul reicht es, wenn du
Me.Shapes("marker")

schreibst statt
ThisWorkbook.ActiveSheet.Shapes("marker")


außerdem solltest du in der Ereignisprozedur
acr = Target.Row

statt
acr = ActiveCell.Row

verwenden.

« Gruß Sepp »



  

Betrifft: AW: Highlighten von mehreren Zellen von: Reinhard
Geschrieben am: 24.01.2012 00:20:15

Hallo Peter,

such mal hier einen Beitrag von Hajo, er nennt da seine WEbseite, u.v.a. gibt es da auch Code für ein "fadenkreuz".

Gruß
Reinhard


  

Betrifft: Nicht nur durch Un/Protect! UserInterfaceOnly! orT von: Luc:-?
Geschrieben am: 24.01.2012 04:43:40

Gruß Luc :-?


Beiträge aus den Excel-Beispielen zum Thema "Highlighten von mehreren Zellen"