Wie kann ich die Zeile in der sich die aktive Zelle befindet hervorheben um die Arbeit in einer großen Tabelle zu erleichtern? Dazu habe ich den folgenden Code gefunden. Funktoniert, ist aber zu langsam ( ca. 10 sek für eine Markierung). Habe schon einiges versucht, leider nur mit geringem Zeitgewinn. Akzeptabel wäre 1 sek. für die Markierung. Bei anderen Ansätzen habe ich das Problem, daß Zellen dieser Tabelle unterschiedliche Hintergrundfarben haben, die nicht dauerhaft verändert werden sollen.
Mit freundlichen Grüssen aus Berlin
Rainer
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static lRow As Long
If Target.Row <> lRow Then
lRow = Target.Row
Call LineMarker
End If
End Sub
'--------------------------------------------------------------------------------
Sub LineMarker()
Dim X As Long
Dim toX As Long
Dim Y As Long
Dim toY As Long
Dim fWidth As Double
Dim fHeight As Double
Dim fTop As Double
Dim ws As Worksheet
On Error Resume Next
Set ws = ActiveSheet
With ws
' toX = .UsedRange.Columns.Count
toY = .UsedRange.Rows.Count
For X = 10 To 20 ' toX
fWidth = fWidth + ws.Cells(ActiveCell.Row, X).Width
Next X
For Y = 1 To toY
If Y = ActiveCell.Row Then Exit For
fTop = fTop + .Cells(Y, 1).Height
Next Y
.Shapes("LineMarker").Delete
End With
fHeight = ActiveCell.Height
With ws
With .Shapes.AddShape(msoShapeRectangle, 0, 0, 0, 0)
.Fill.Visible = msoTrue
.Fill.Solid
.Fill.ForeColor.SchemeColor = 31
.Fill.Transparency = 0.5
.Line.Weight = 0.75
.Line.Style = msoLineSingle
.Line.DashStyle = msoLineSolid
.Line.Transparency = 0
.Line.Visible = msoTrue
.Line.ForeColor.SchemeColor = 32
.LockAspectRatio = msoFalse
.Width = fWidth
.Height = fHeight
.Top = fTop
.Name = "LineMarker"
End With
End With
End Sub
'--------------------------------------------------------------------------------
'EndOfCode
'--------------------------------------------------------------------------------