UserForm verschieben => Excel mitverschieben

Von: , Frage gestellt am Do, 2. Feb 2012

Hallo Profis!

hab noch eine schönheitskorrektur an meiner applikation vor:
hab eine GUI in form einer UserForm gebaut die immer aktiviert ist wenn die excel datei aktiv is und nur als admin deaktiviert werden kann. sie liegt immer im vordergrund vor thisworkbook.
nun wär es spitze, dass wenn ich die UserForm, also die GUI mit der Maus verschiebe (z.B. auf anderen bildschirm), sich das zugehörige Excel(ThisWorkbook) mitverschiebt (wenns nur für application geht, dann auch ok). showmodal alleine reicht wohl ned.

danke vielmals im voraus.
hoffe ich hab alle benötigten infos mitgeliefert. wenn es nur mit aufwändigerer API bastelei funz, dann hat sichs erledigt. is nur für die B note ;)

greetz

mole

office2010
Win7
Keine Installation von Addins möglich!

17 Antworten zu dieser Frage

  1. Antwort von nach 9 Stunden 0 hilfreich
    Re: UserForm verschieben => Excel mitverschieben

    Hallo,


    so auf die schnelle wuerde ich mich der MoveWindow-APIFunktion bedienen.

    Vom Application Objekt das hWnd-handle und dann:

    Declare Function MoveWindow Lib "user32" Alias "MoveWindow" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long

    Tschau
    Peter

    • Antwort von nach 19 Stunden 0 hilfreich
      Re^2: UserForm verschieben => Excel mitverschieben

      Danke für die Antwort, allerdings kann ich das so mit meinem wissen noch ned umsetzen ;)
      den declare teil pack ich an den anfang des codes der userform oder in ein standardmodul?
      und dann muss ich damit ja noch irgend was anfangen oder geht der rest von selbst und ich muss in der userform selbst keine weiteren subs erstellen damit das funzt?

      danke nochmal!!!

      greetz

      • Antwort von nach 20 Stunden 0 hilfreich
        Re^3: UserForm verschieben => Excel mitverschieben

        Hi,

        ich hab mir das ganze mal genauer angeschaut.....
        prinzipell ist es kein Problem das Application-Fenster zu verschieben aber......
        den declare teil pack ich an den anfang des codes der userform
        oder in ein standardmodul?
        ja, genau und dann muss ich damit ja noch irgend was anfangen oder geht
        der rest von selbst und ich muss in der userform selbst keine
        weiteren subs erstellen damit das funzt?
        ne, man muss die Function auch aufrufen, und da liegt in deinem Fall das Problem, denn die UserForm loest beim verschieben auf dem Desktop keine EReignis aus. d.h. du bekommst nicht mit wann du die Funktion aufrufen musst. Zumindest habe ich auf die Schnelle nichts gefunden wo man das sinnvoll machen koennte.

        i.A.: Wuerde der Funktionsaufruf in einer Sub etwa so aussehen:

        MoveWindow(application.hWnd ,xKoordinateEckelinksoben, yKoordinateEckelinksoben, Breite, Hoehe, true)


        Tschau
        Peter

        • Antwort von nach 21 Stunden 0 hilfreich
          Re^4: UserForm verschieben => Excel mitverschieben

          ok, danke nochmals!

          hätte noch ne idee für einen workaround, der das gleiche bewirkt (wo ich aber auch ned weiß ob es klappt):

          Kann man bewerkstelligen, dass, sofern die GUI aktiv ist (mir klar wie das geht), das Excel im hintergrund in die taskleiste gelegt wird (mir auch klar wie das geht) und nicht aktiviert werden kann (keine ahnung wie das geht ^^). sozusagen zugriffsschutz über ablage in der tastkleiste.
          im grunde müsste das excel garned geöffnet sein (muss es natürlich für die ausführung des codes), ausser jemand will in den adminbereich.

          • Antwort von nach einem Tag 0 hilfreich
            Re^5: UserForm verschieben => Excel mitverschieben

            Hallo Mole, hätte noch ne idee für einen workaround, der das gleiche
            bewirkt (wo ich aber auch ned weiß ob es klappt):
            ? das Gleiche wie in deiner ersten Anfrage? *staun* Kann man bewerkstelligen, dass, sofern die GUI aktiv ist (mir
            klar wie das geht),
            Damit ich verstehe was du sagst, du weißt wie man in Excel eine Userform startet/aufruft? das Excel im hintergrund in die taskleiste
            gelegt wird (mir auch klar wie das geht)
            Ich würde das so machen:
            Application.WindowState = xlMinimized
            aber dann ist auch die Userform weg vom Bilschirm.
            Ist das das was du meinst? und nicht aktiviert
            werden kann (keine ahnung wie das geht ^^).
            Das aktivieren könnte man nur durch Ereigniscode im Workbook "abfangen".
            Aber ich sehe da nichts dafür.
            Workbook_Activate()
            Workbook_WindowActivate(
            reagieren beide nicht darauf. sozusagen
            zugriffsschutz über ablage in der tastkleiste.
            Vielleicht gibt es da Fremdprogramme für Windows die das erreichen. K.A. im grunde müsste das excel garned geöffnet sein (muss es
            natürlich für die ausführung des codes),
            Aha. Du kommst also zu dem Schluß Excel muß geöffnet sein.
            Das hätte ich sowieso erwartet wenn du Excelcode laufen lassen willst :-) ausser jemand will in
            den adminbereich.
            *grins* Ein echter Admin sollte wissen wie er wo "reinkommt"...

            Mir ist noch sehr unklar was du eigentlich genau möchtest.

            Gruß
            Reinhard

            • Antwort von nach einem Tag 0 hilfreich
              Re^6: UserForm verschieben => Excel mitverschieben

              Hallo Reinhard, Mir ist noch sehr unklar was du eigentlich genau möchtest.
              ich glaub' ich hab's verstanden. Er möchte eine Userform, wie ein VB6-Programm haben und die Excel-Tabelle 'verstecken'. (Und auch noch den Zugriff auf Excel verbieten)

              Gruß Rainer

            • Antwort von nach 3 Tagen 0 hilfreich
              Re^7: UserForm verschieben => Excel mitverschieben

              Moin,

              jo, das Ziel meines Posts bleibt das selbe (@Reinhard, hab in klammern meist dazugeschrieben, was davon schon läuft, deswegen: ja, ich weiß wie man startet/beendet/aktiviert/deaktiviert), das workbook soll nicht alleine, sprich ohne userform sichtbar sein (ausser ich klicke auf den admin link (es geht sehr viel um usability, deswegen soll der admin nicht "wissen wie man da hin kommt" sondern eine angenehme möglichkeit haben, da hin zu kommen), was aber nur randinfo ist). aktivitäten innerhalb userforms sind mir bekannt...

              jo Rainer, dein satz bringts wohl in aller kürze auf den punkt ;-)


              wie im ersten post beschrieben wäre mein ziel, das workbook mit zu verschieben, wenn ich per maus die userform verschiebe (von monitor zu monitor). da das scheinbar ned funzt bzw heftig is, is mir der workaround mit der "fixierung" des workbooks in der taskleiste eingefallen. das workbook müsste doch eigentlich nicht aktiviert (hab da vorhin das falsche wort benutzt, geöffnet muss es sein, is natürlich klar) sein, damit der VBA code ausgeführt wird oder?

              das wären die verschiedenen aktivitäten bzw zustände:

              1. userform sichtbar, workbook ist dahinter aktiviert, kann nur per adminlink eingesehen werden (läuft bereits)

              2. userform wird minimiert, workbook wird minimiert (das funzt bereits)

              3. workbook wird in der taskleiste wieder aktiviert, userform aktiviert sich mit (funzt leider noch ned, bekomm ich aber hin, worksheet_activate bzw workbook_activate)

              4a. Userform wird per Maus von einem zum anderen bildschirm geschoben, workbook bewegt sich im hintergrund mit (das wäre zielerreichung auf weg a)

              ODER

              4b. Userform ist aktiviert, Workbook liegt in der taskleiste, ist nicht hinter der userform aktiviert. wird nur aktiviert wenn adminlink geklickt wird. (das wäre zielerreichung auf weg b)

              hoffe ich habs jetzt klar dargelegt.

              greetz und vielen dank!!!

            • Antwort von nach 7 Tagen 0 hilfreich
              Re^8: UserForm verschieben => Excel mitverschieben

              Hey,

              ich weiß, sowas wie /up /push wird hier ned gern gesehen ^^
              aber besteht noch die chance, dass jemand nen ansatz zur lösung hat :)

              ansonsten auf jeden fall ein schönes wochenende!

              bis denne

            • Antwort von nach 13 Tagen 0 hilfreich
              Re^9: UserForm verschieben => Excel mitverschieben

              Hi, ich weiß, sowas wie /up /push wird hier ned gern gesehen ^^
              aber besteht noch die chance, dass jemand nen ansatz zur
              lösung hat :)
              ich kenne mich mit VBA nicht aus. Für VB6 hätte ich Vorschläge, aber die passen nicht auf VBA. Daß Reinhard nichts schreibt bedeutet einfach, er hat keine Lösung für Dein Problem und das ist kein gutes Zeichen. Reinhard kennt sich in Excel-VBA recht gut aus. ansonsten auf jeden fall ein schönes wochenende!
              Wünsch' ich Dir auch.

              Gruß Rainer



Keine passende Antwort gefunden? Jetzt eigene Frage stellen!