Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1060to1064
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Objekte fixieren

Objekte fixieren
21.03.2009 23:19:10
Jörg
Guten Abend zusammen!
Die Frage, wie Objekte in einem Arbeitsblatt "scroll-resistent" fixiert werden können, taucht ja im Archiv öfter auf, mit Antworten von "geht nicht" bis zu Userform drunter legen u.a.m. ist alles dabei, und meist klappt es am Ende nicht zufriedenstellend. Ich kann aber irgendwie nicht glauben, daß etwas in Excel nicht machbar sein soll, was auf jeder Website möglich ist...
In meinem Fall ist es wie bei anderen Fragern auch: Fenster fixieren oder so geht nicht.
Wäre es nicht eine Möglichkeit, die Eigenschaften Left und Top an ein Scoll-Ereignis zu koppeln? Wie könnte ein Code dafür aussehen?
Gruß Jörg

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Objekte fixieren
21.03.2009 23:26:48
Hajo_Zi
Hallo Jörg,
Scroll löst ken Ereignis aus.
Gruß Hajo
hhmmm... schade eigentlich :-((
21.03.2009 23:41:22
Jörg
Ein bischen was geht immer...;-)
22.03.2009 08:53:34
ransi
HAllo
Scroll löst kein Ereigniss aus, das stimmt, aber dann man kann sich ja eins schreiben ;-)
Hier mal ein Ansatz:
(Mit der gaaaanz heißen Nadel gestrickt)
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit



Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name = "Tabelle1" Then
        Call Aufruf
        Else:
        Call stoppen
    End If
End Sub

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Dim Z As Long
Dim S As Integer
Dim hEvent


Private Declare Function SetTimer Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByVal nIDEvent As Long, _
    ByVal uElapse As Long, _
    ByVal lpTimerFunc As Long) As Long

Private Declare Function KillTimer Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByVal nIDEvent As Long) As Long

Public Sub Aufruf()
    Z = ActiveWindow.VisibleRange.Rows(1).Row
    S = ActiveWindow.VisibleRange.Columns(1).Column
    EnableTimer 100 'Millisekunden
End Sub

Public Sub stoppen()
    DisableTimer
End Sub

Public Sub TimerProc(ByVal hWnd As Long, ByVal uMsg As Long, _
        ByVal wParam As Long, ByVal lParam As Long)
    If ActiveWindow.VisibleRange.Rows(1).Row <> Z Then
        Z = ActiveWindow.VisibleRange.Rows(1).Row
        Call vertikal_Scroll
    End If
    If ActiveWindow.VisibleRange.Columns(1).Column <> S Then
        S = ActiveWindow.VisibleRange.Columns(1).Column
        Call Horizontal_Scroll
    End If
End Sub


Public Function EnableTimer(ByVal msInterval As Long)
    If hEvent <> 0 Then Exit Function
    hEvent = SetTimer(0&, 0&, msInterval, AddressOf TimerProc)
End Function

Public Function DisableTimer()
    If hEvent = 0 Then Exit Function
    KillTimer 0&, hEvent
    hEvent = 0
End Function



Public Sub Horizontal_Scroll()
    MsgBox "Jetzt wird horizontal gescrollt"
End Sub

Public Sub vertikal_Scroll()
    MsgBox "Jetzt wird vertikal gescrollt"
End Sub

ransiHAllo
Hier mal ein Ansatz.
(Mit der gaaaanz heißen Nadel gestrickt )
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit



Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name = "Tabelle1" Then
        Call Aufruf
        Else:
        Call stoppen
    End If
End Sub

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Dim Z As Long
Dim S As Integer
Dim hEvent


Private Declare Function SetTimer Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByVal nIDEvent As Long, _
    ByVal uElapse As Long, _
    ByVal lpTimerFunc As Long) As Long

Private Declare Function KillTimer Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByVal nIDEvent As Long) As Long

Public Sub Aufruf()
    Z = ActiveWindow.VisibleRange.Rows(1).Row
    S = ActiveWindow.VisibleRange.Columns(1).Column
    EnableTimer 100 'Millisekunden
End Sub

Public Sub stoppen()
    DisableTimer
End Sub

Public Sub TimerProc(ByVal hWnd As Long, ByVal uMsg As Long, _
        ByVal wParam As Long, ByVal lParam As Long)
    If ActiveWindow.VisibleRange.Rows(1).Row <> Z Then
        Z = ActiveWindow.VisibleRange.Rows(1).Row
        Call vertikal_Scroll
    End If
    If ActiveWindow.VisibleRange.Columns(1).Column <> S Then
        S = ActiveWindow.VisibleRange.Columns(1).Column
        Call Horizontal_Scroll
    End If
End Sub


Public Function EnableTimer(ByVal msInterval As Long)
    If hEvent <> 0 Then Exit Function
    hEvent = SetTimer(0&, 0&, msInterval, AddressOf TimerProc)
End Function

Public Function DisableTimer()
    If hEvent = 0 Then Exit Function
    KillTimer 0&, hEvent
    hEvent = 0
End Function



Public Sub Horizontal_Scroll()
    MsgBox "Jetzt wird horizontal gescrollt"
End Sub

Public Sub vertikal_Scroll()
    MsgBox "Jetzt wird vertikal gescrollt"
End Sub

ransi
Anzeige
Ein bischen was geht immer...;-)
22.03.2009 09:06:45
ransi
Hallo
Hab grade gesehen das ich den letzten Post vermurkst habe.
Hier mal die Beispieldatei:
https://www.herber.de/bbs/user/60553.xls
ransi
AW: Ein bischen was geht immer...;-)
22.03.2009 11:12:29
Jörg
Moin Ransi
also... bis ich den Code so richtig verstanden habe, wird wohl noch ein Weilchen vergehen :-)
Ich hatte gedacht, daß ich anstelle der MsgBoxen nun hineinstellen müßte zB
With Worksheets("Tabelle1").CheckBox1
.Left = 20
.Top = 30 usw
aber das geht nicht... An welcher Stelle muß denn stehen, daß Objekt xy bitte schön an Position soundso stehen soll?
Gruß Jörg
Anzeige
AW: PS
22.03.2009 11:15:54
Jörg
...übrigens kommt, während die Beispieldatei geöffnet ist, immer dann, wenn ich eine weitere Datei öffne, der Hinweis "Jetzt wird vertikal gescrollt" ;-))
Nur ein Grungerüst.
22.03.2009 11:43:50
ransi
HAllo Jörg

Ich hatte gedacht, daß ich anstelle der MsgBoxen nun hineinstellen müßte zB
aber das geht nicht... An welcher Stelle muß denn stehen, daß Objekt xy bitte schön an Position soundso stehen soll?


Ich schrieb extra:
ein Ansatz:
(Mit der gaaaanz heißen Nadel gestrickt)

Das sollte heißen:
Einfach so dahin geschrieben und kaum getestet.
Also keine Fehlerroutine oder sowas.
Ich schau mal ob ich das noch alles reingebaut kriege.


also... bis ich den Code so richtig verstanden habe, wird wohl noch ein Weilchen vergehen :-)


Der code startet einen Timer.
Alle 100 Millisekunden wird die oberste Rechte Zelle der VisibleRange abgefragt.
Hat sich die Zeilennummer oder die Spaltennummer geändert erscheint die Msgbox.
ransi

Anzeige
AW: Objekte fixieren
21.03.2009 23:43:59
Uduuh
Hallo,

in Excel nicht machbar sein soll, was auf jeder Website möglich ist...


Excel ist eben eine Tabellenkalkulation.
Gruß aus’m Pott
Udo

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige