Office: Scrollbar "springt" bei Aktivierung...wie abstellen?

Helfe beim Thema Scrollbar "springt" bei Aktivierung...wie abstellen? in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Forum also ich hab ein Userform, darauf einen Rahmen und in diesem Rahmen eine Bildlaufleiste, mit der ich im Rahmen rauf- und runter scrollen... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Mimamorn, 26. August 2006.

  1. Scrollbar "springt" bei Aktivierung...wie abstellen?


    Hallo Forum

    also ich hab ein Userform, darauf einen Rahmen und in diesem Rahmen eine Bildlaufleiste, mit der ich im Rahmen rauf- und runter scrollen kann. Wenn ich jetzt im Rahmen arbeite und die Bildlaufleiste z.B. in der Mitte stehen lasse, dann irgendetwas außerhalb des Rahmens aktiviere, z.B. einen Button o.ä. und dann zurück in den Rahmen klicke springt die Bildlaufleiste automatisch nach ganz oben. Das kann ganz schön nervig werden... kann mir jemand weiterhelfen, wie ich dieses lästige Springen abstellen kann?

    mfg
    Morten

    :)
     
    Mimamorn, 26. August 2006
    #1
  2. Moin, Morten,

    den Rahmen entsprechend vergößern, damit die Scrollbar überflüssig wird?
     
  3. hey jinx,

    nette idee, aber nicht zu realisieren...ist zu groß. habe ca. 160 textboxen untereinander, die nunmal beim besten willen nicht auf eine seite passen.
    Noch weitere Ideen? Da muss es doch irgendwie 'ne Möglichkeit geben, dass abzustellen, ist doch vollkommen "unnormal" bei Scrollbars, dass die nach oben springen...

    MfG
    Morten
     
    Mimamorn, 29. August 2006
    #3
  4. Scrollbar "springt" bei Aktivierung...wie abstellen?

    Hat wirklich niemand mehr eine Idee oder Lösung?
    Mal ein praktisches Beispiel: Die Textboxen befinden sich alle in einem Rahmen. Ändere ich jetzt etwas in einer Textbox, habe ich außerhalb dieses Rahmens einen Button "Einträge aktualisieren", sodass in der dazugehörigen Datenbank diese Änderungen übernommen werden. Nachdem ich diesen Button geklickt habe und eine weitere Änderung vornehmen möchte, und wieder in irgendeine Textbox innerhalb des Rahmens klicke, springt die Scrollbar an die Anfangsposition und ich muss wieder dahinscrollen, wo ich zuletzt war. Das ist nervig *Smilie
    Es gibt ja die Eigenschaft ScrollTop mit der man bestimmen kann, wo sich die Scrollbar befinden soll, aber ich komme nicht auf den Trichter, wie ich diese richtig einsetzen kann. Ich denke aber auch, dass es einfacher gehen muss.
    Ansonsten wäre ich dankbar über Hinweise in welchen anderen Foren es sich evtl. lohnen würde, zu fragen. Aber ich glaube fest daran, dass hier noch eine Lösung gefunden wird! *Smilie

    MfG
    Morten
     
    Mimamorn, 29. August 2006
    #4
  5. Moin, Morton,

    vielleicht solltest Du Dir einmal Gedanken über einen ergonomischen Aufbau von UI (sprich: UserInterfaces) machen - für mich ist das ohne Kenntnis des Hintergrundes/Aufbaus in Deinem Fall eher keiner...
     
  6. Hallo,

    da ich das Problem immer noch nicht beheben konnte habe ich einfach mal eine einfache Beispieldatei angehängt, die mein Problem zeigt.
    Vorgehen: Arbeitsmappe öffnen - im Userform nach unten scrollen - CommandButton1 drücken (der mit keiner Funktion belegt ist) - in eine der Textboxen klicken .... und die Scrollbar springt nach oben. Wieso? Das kann doch nicht normal sein...was muss ich umstellen?

    Eine Idee für eine Aufbauänderung ist mir noch nicht gekommen...letztendlich soll das ganze ein große Maske sein, die Datensätze aus unterschiedlichen Tabellen ausliest. Der Benutzer soll die Möglichkeit haben in dieser Masek jeden Teil des Datensatzes zu bearbeiten. Von daher habe ich die Lösung Textboxen gewählt...Listbox, Combobox, etc. erscheinen mir nicht als bessere Lösung. Also hänge ich mit dem kleinen Problem fest. Bin für jeden Lösungsansatz offen.

    MfG
    Morten
     
    Mimamorn, 5. September 2006
    #6
  7. Hi mimamorn,

    ohne in Dein Bsp. zu sehen. Wie wäre es mit einer öffentlichen Variable, die den letzen Wert der Scrollbar aufnimmt und bei Fokuserhalt des Rahmens oder einer der Textboxen (hoffentlich als Klasse) wieder auf diesen Wert gesetzt wird?
    Dann sieh noch einmal nach, ob bei irgendeinem Ereignis der Value der Scrollbar nicht wieder auf 0 gesetzt wird.
     
  8. Scrollbar "springt" bei Aktivierung...wie abstellen?

    Hallo Ralf,

    Da kann ich mit Sicherheit sagen, dass das nicht der Fall ist, in dem Beispiel ist nichts anderes vorhanden außer der Erstellung der Textboxen und der Scrollbar.

    Deine andere Idee werde ich mal probieren. Anfängerfrage: Was genau meinst du mit Textboxen als Klassen? Dass ich alle erzeugten Textboxen zu einer Klasse zusammenfassen sollte um dann auf alle gleichzeitig zugriff zu haben?

    Ansonsten bin ich immer noch verwundert über das verhalten dieser scrollbar... *tongue.gif*

    mfg
    Morten
     
    Mimamorn, 5. September 2006
    #8
  9. Hi Morten,

    mit Sicherheit? Lösche mal die Min und Max Werte im Eigenschaftsfenster und setze sie erst zur Laufzeit.

    Zu Klassen: Das jetzt im Detail zu erläutern würde zu weit führen. Nur soviel, Du könntest EINE Textbox-Klasse erstellen statt 160 einzelne Textboxen. Das hätte den Vorteil, dass Du nicht auf 160 Click-Ereignisse etc. reagieren musst, sondern einmal festlegst was passieren soll. Außerdem bist Du von der Anzahl her flexibel.

    Mehr über Klassen findest Du hier: Online - Excel Programmierung VBA Makro: Klassen
     
  10. Hey Ralf,

    ich wollte grade deine Möglichkeit mit Scrollbarwert public abspeichern und bei Fokuserhalt der Textboxen diesen zu setzen ausprobieren, komme aber irgendwie nicht weiter:

    Meinen Progammtext aus der Beispieldatei habe ich um folgendes ergänzt:

    Code:
    Code:
    Code:
    Nur um erstmal den Fokuserhalt zu testen. Das haut aber so noch gar nicht hin. Bin mir da aber auch noch gar nicht sicher...wie gehts richtig?

    MfG
    Morten
     
  11. Hi Morten,

    das ist ja ein ganz besonders witziger und lustiger Ansatz. (Nicht belustigend, ich find die Idee wirklich gut, bestehende Textboxen in die Klasse aufzunehmen). Keine Ahnung ob das geht. Zumal ich gerade beim Feiern bin. Normalerweise funktioniert das ja anders herum. Ich erstelle eine Klasse und nutze für jede neue Instanz deren Möglichkeiten. Aber das wolltest Du Dir ja sicher ersparen. Obwohl das nicht wirklich wesentlich mehr Aufwand ist. Du müßtest nur bereit sein, Deine alten Textboxen aufzugeben. Andererseits, wenn Du das so rum schaffst, erhältst Du den Klassen-Aufnahme-Nobelpreis...*Smilie
    Kleiner Tip: Viele haben eine eigentlich unbegründete Angst vor 'Klassenarbeit'-en *Smilie Versuch mal in einem neuen Projekt, Step by Step nach der Anleitung vom obigen Link vorzugehen. Spätestens nach ein paar Versuchen kannst Du es. Wenn Du es aber trotzdem schaffst, die bestehenden Textbnoxen in eine Klasse aufzunehmen, laß es mich wissen. Das wäre ein richtig schöner, genialer Schachzug! Den will ich auch beherrschen...*Smilie
    Aber jetzt - wird weiter gefeiert *Smilie
     
  12. Hi Ralf,

    also grundsätzlich funktioniert das so, wie ich's oben beschrieben hab. Wen ich z.B. den letzten Code-Schnipsel so schreibe...
    Code:
    ...dann funktioniert der Spaß. (ist der Nobelpreis nicht auf irgendwie mit Geld dotiert...? *wink.gif* )
    Aber ok, du hast wohl Recht, dann werde ich mir den Klassenkram mal in Ruhe zu Gemüte führen!

    MfG
    Morten
     
  13. Scrollbar "springt" bei Aktivierung...wie abstellen?

    Hi Morten,

    wieder nüchtern und somit Problem erkannt. Das Problem ist, dass leider nicht alle Ereignisse in der Klasse unterstützt werden. Wie Du schon richtig erkannt hast, das Change Ereignis wird unterstützt, das Got_Focus Ereignis nicht. Nutze alternativ das MouseUp Ereignis. Das ist genausogut wie GotFocus.

    Stimmt, der Nobelpreis ist mit Geld verbunden. Das zahlen aber die Schweden aus *Smilie
    Verdient hast Du ihn (den Preis) trotzdem, denn ich selbst wäre ganz sicher nicht auf die Idee gekommen die Sache von hinten aus aufzuziehen.
     
  14. Ein Hallo an alle Beobachter dieses Themas...

    also ich hab noch ein wenig weiter herumprobiert und nach einer einfachen Lösung gesucht. Wenn ich im Programmcode beim Hinzufügen der Textboxen jeweils die Eigenschaft .Tabstop = False setze springt die Scrollbar nicht mehr. Juche, Juche, Freude. Für einen kurzen Moment. Jetzt hab ich natürlich das Problem, dass ich nicht mehr mit Tab oder Enter von einer Textbox zur nächsten wechseln kann. Hab dann also weiter probiert um mehr über das Problem zu erfahren. Wenn der Frame aktiv wird, springt er zu der Textbox mit dem TabIndex 0. Hab z.B. den TabIndex der Textboxen mal umgekehrt nummeriert, also hatte die letzte Textbox den TabIndex 0. Und wie vermutet springt die Scrollbar nach gleichen Aktionen (wie in vorherigen Posts schon beschrieben) in diesem Fall nach ganz unten.
    So... meine Frage jetzt: Wie erreiche ich, dass zum einen dieses Springen unterbunden ist und zum anderen ich trotzdem mit Tab / Enter von einer Textbox zur nächsten springen kann? Vielleicht hat ja jemand mit diesen weitere Informationen eine neue Idee für eine einfache Lösung. (.ScrollTop merken und bei Aktivierung zurücksetzen (wie schon vorgeschlagen) würde natürlich funktionieren, ist aber sehr umständlich...)

    Ich hoffe auf Hilfe!

    Hoch die Tassen,

    Morten
     
    Mimamorn, 24. Oktober 2006
    #14
  15. Ok, falls jemanden eine Lösung interessieren sollte (ich habe bewusst "eine" Lösung geschrieben):

    Ich habe das Problem folgendermaßen gelöst:

    Sobald ich in eine der Textboxen klicke, ist Frame1 aktiv. Wenn ich auf irgendeinen Button klicke, nicht mehr. Das habe ich mir zunutze gemacht. Das Ereignis Frame1_Exit(...) habe ich wie folgt belegt:

    Code:
    scrollb ist public.

    Somit wird ganz einfach die Position der Scrollbar beim Verlassen des Frames abgespeichert, also der gleiche Ansatz wie schon bei Ralfs Lösungsmöglichkeit. Wenn ich jetzt wieder in eine der Textboxen klicke, wird das Ereignis Frame1_Enter() ausgelöst. Dieses bewirkt folgendes:

    Code:
    Ich ermittle die Position der obersten sichtbaren Textbox und belege deren TabIndex mi dem Wert 0. So springt die Scrollbar genau zu dieser Textbox, wie gewünscht. Einfach den Wert der Scrollbar auf den gespeicherten setzen funktioniert nicht, da das Springen der Scrollbar erst nach dem Enter-Ereignis auftritt.

    Wer sich das ganz noch kurz angucken möchte, kann dies in der angehängten Datei tun.
    Nochmal recht herzlichen Dank fürs mitdenken und helfen!

    MfG
    Morten
     
    Mimamorn, 24. Oktober 2006
    #15
Thema:

Scrollbar "springt" bei Aktivierung...wie abstellen?

Die Seite wird geladen...
  1. Scrollbar "springt" bei Aktivierung...wie abstellen? - Similar Threads - Scrollbar springt Aktivierung

  2. VBA Textbox macht was sie will

    in Microsoft Excel Hilfe
    VBA Textbox macht was sie will: Hallo, ich bin ein Neuling bei VBA auch Excel habe ich bisher nie so intensiv benutzt wie in den letzten Wochen. Ich sitze jetzt schon länger vor einem Problem, welches ich weder mit Hilfe des...
  3. Formular in Entwurfsansicht nur teilweise Scrollbar

    in Microsoft Access Hilfe
    Formular in Entwurfsansicht nur teilweise Scrollbar: Moin, ich habe leider folgendes Problem: In einem Formular in der Entwurfsansicht kann ich irgendwie nur immer den rechten oberen teil des Formulars scrollen aber nie der ganze. selbst der...
  4. ListBox scrollbar

    in Microsoft Excel Hilfe
    ListBox scrollbar: Guten Morgen. Nepumuk hatte, laut meinen Google-Recherchen, mal einen Code erarbeitet, der ein scrollen mit Maus in ListBox-Elementen erlaubt. Ich hab das dann nicht weiter verfolgt, weil überall...
  5. Listbox in Userform ohne vertikale Scrollbar

    in Microsoft Excel Hilfe
    Listbox in Userform ohne vertikale Scrollbar: Hallo zusammen, ich suche mir schon den ganzen Nachmittag die Finger wund und werde leider nicht fündig *frown.gif* Ich hätte folgende zwei Fragen. Auf einer Userform befinden sich 4 Listboxen,...
  6. ScrollBars der Listbox anpassen

    in Microsoft Excel Hilfe
    ScrollBars der Listbox anpassen: Hallo zusammen, ich habe in einer Userform eine Listbox erstellt und mit 4 Zahlen gefüllt. Ich möchte nun eine Scrollbar haben mit der ich die Zahlen durch scrollen kann. Problem: Ich bekomme...
  7. Position vertikale ScrollBar im DataSheet nach Requery

    in Microsoft Access Hilfe
    Position vertikale ScrollBar im DataSheet nach Requery: Hallo Zusammen, nach einer Änderung in meinem UFO (DataSheet) merke ich mir den betroffenen Datensatz, um diesen nach dem Requery mit FindFirst wieder im DataSheet zu selektieren. Das...
  8. [Excel] Farbe einer Scrollbar (Formularsteuerelement) ändern

    in Microsoft Excel Hilfe
    [Excel] Farbe einer Scrollbar (Formularsteuerelement) ändern: Hallo zusammen, und schon tut sich das nächste Problem auf: Ich würde gerne wissen, ob man in Excel die Farbe einer Bildlaufleiste ändern kann. Und damit meine ich nicht die horizontale und...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden