Èxcel "Kantensprung" verhindern

sra

Erfahrenes Mitglied
Hallo

Ich habe für mein Excel (2000) ein Makro geschrieben, welches Informationen aus einer Datei ausliest, und diese Zeilenweise ausgibt. In jeder Zeile habe ich nun eine bestimmte Zelle, und mit doppelklick auf diese wird die gesamte Zeile accepted (sprich farbig hinterlegt).

Mein Problem ist, dass wenn man den Doppelklick ausversehen auf die Linie macht (den Rand der Zelle), und das kommt noch oft vor, dann springt Excel mir in der gleichen Spalte in die oberste Zeile.

Das ist sehr unschön, wenn man so ca. 120 Zeilen accepten müsste, aber bei jeder zehnten einen solchen "Kantensprung" macht.

Weiss jemand was das ist? Ist das ein Bug (oder ein Feature :D), und kann man das unterdrücken (am besten per Makro)?

Danke
 
Feature!

Also das von dir beschriebene Problem ist ein (eigendlich) sehr nützliches Feature, also definitiv kein Bug.
Mir ist keine Option bekannt mit der man das umgehen kann. Habe mir mal die "sheetBeforeDoubeClick" und "BeforeDoubleClick" Ereignisse genauer angesehen:
Eine Mögliche Lösung wäre ja, wenn man bei idesen Ereignissen die aktive Zelle und das Ziel (Target) vergleichen würde um festzustellen, ob dieser Sprung stattfindet. Das Problem ist nur, dass diese Ereignisse anscheint NICHT auftreten, wenn man auf die Zellbegrenzungen Klickt!

Ich weiß nicht nach welchem Schema du die Zeilen "accepten" musst, wenn dies aber schon vorher feststeht, hilft dir vielleicht auch die "bedingte Formatierung" oder ein Makro, was die Tabelle durchgeht und entsprechende Zeilen nach bestimmten Kriterien färbt.

gruß
thekorn
 
hm

Ich arbeite mit einem BeforeDoubleClick Ereignis, welches dann einfach jeweils die Hintergrundfarbe der Zeile ändert. Die Bedingungen dafür stehen aber vorher nicht fest, also muss der User die Zeilen selbst "accepten".

Das mit dem Target und ActiveCell vergleichen kann ich ja mal probieren, aber allzugrosse Erfolgschancen sehe ich da nicht :/

btw. Ich frage mich für was das nützlich sein soll. Ist das nur excel 2000 oder kommt das in xp und co auch vor?
 
andere Idee

Also erstmal, ich finde dieses Feature recht nützlich, wenn man in großen Tabellen navigiert, kann man so ganz schnell und bequem per Maus "nach Hause" kommen ;)
Zu deinem Problem:
Vielleicht muss es ja nicht unbedingt mit Doppelklick geschehen, du kannst dir ja uU. auch eine extra Spalte A leisten, in der sich in jeder Zeile eine "Checkbox" befindet. Diese Checkbox zum Accepten einfach markieren, anschließend auf einen Button drücken, und der gewünschte Bereich wird eingefärbt.

Habe mal auf die schnelle ezwei Prozeduren geschrieben, die dies erledigen.

Code:
Public Sub Zeilen_Färben()
Dim Zeile As String

For Each s In Worksheets(1).Shapes
    If s.Type = msoFormControl Then
        If s.FormControlType = xlCheckBox Then
            If s.ControlFormat.Value = 1 Then
                Zeile = Right(s.BottomRightCell.Address, Len(s.BottomRightCell.Address) - 3)
                Worksheets(1).Range(Cells(Zeile - 1, 3), Cells(Zeile - 1, 6)).Interior.Color = vbRed
            End If
        End If
    End If
Next
End Sub

'**********************************************

Public Sub Controls_erstellen()
Dim F_Control As Object

For i = 1 To 20
With Worksheets(1)
    Set F_Control = .Shapes.AddFormControl(xlCheckBox, 0, (i - 1) * .Rows(1).Height, .Columns(1).Width, .Rows(1).Height)
    F_Control.TextFrame.Characters.Text = "Einfärben?"
End With
Next i
With Worksheets(1)
    Set F_Control = .Shapes.AddFormControl(xF_ControluttonControl, 0, i * .Rows(1).Height, .Columns(1).Width, .Rows(1).Height)
    F_Control.TextFrame.Characters.Text = "Zellen färben"
    F_Control.OnAction = "Zeilen_Färben"
End With
End Sub

Die Prozedur "Controls_erstellen" erstellt einfach in den ersten 20 Zeilem in der ersten Spalte jeweils eine Checkbox, und darunter einen Button. Außerdem weist sie noch dem button die Prozedur "Zeilen_Färben" zu. Diese Prozedur prüft den Wert jeder Checkbox und färbt ggf. die entsprechende Zeile ein!

Hoffentlich hilft dir das weiter!

gruß
thekorn
 
lol

Tut mir leid, hat nichts mit dir zu tun aber: LOL :D

So wollte ich es anfangs machen, ich habe also dynamisch auf jeder Zeile eine Checkbox plaziert, und wollte dann mir der Checkbox die Zeile "färben". Erstens kann man diesen Checkboxen dann keine Funktion übergeben (es sei denn man macht mal so provisorisch 1000 onClickEreignise), also muss ein Button her (sehr unschön). Dann war ein Problem, dass ich nicht rausgefunden habe, wie man die Zeile ausliest (ok - du hast es scheinbar rausgefunden), aber das Problem schlechthin war, dass es 2-3 Minuten dauerte, das File zu öffnen, wenn durchschnittlich 300 Checkboxen geladen werden mussten!

Irgendwann habe ich diese Idee also aufgegeben
 
Muss ja kein Button sein!

Also wenn dich der Button stört, kannst du das Zeilen Färben Makro ja auch in eine Symbolleiste/ Menü legen oder per Tastenkombination ausführen.
Das mit der Geschwindigkeit kann ich nicht nachvollziehen: habe mal 5000 Boxen in ein Blatt gepackt, beim öffnen gab es überhaupt keine Probleme, hat kaum länger gedauert (habe hier gerade mal einen 700 Mhz AMD-schleicher :p )
WICHTIG für die Performence ist denke ich, dass du kein OLE-Checkbox, sondern ein Excel-FormControl-Checkbox nimmst!

Immer dran denken, mach es wie der Torwart-Kahn, NIE AUFGEBEN!

in diesem Sinne...
thekorn
 
lol

Ich habe OleCheckBoxen genommen :D

hm... Ich bin aber schon zu weit, um das wieder umzustellen denke ich. Danke trotzdem - nächstes mal nehm ich die Excel CheckBoxen.
 

Neue Beiträge

Zurück