2013-01-15 12 views
5

Benötigen Sie Hilfe beim Anhängen einer Excel/VBA-Schaltfläche an eine Excel-Tabelle. Ich brauche es, um in der gleichen Position auf dem Bildschirm zu bleiben, unabhängig davon, wie ich blättern oder zoomen. Vorzugsweise brauche ich das links unten oder rechts vom Bildschirm.Excel: Fixed Button Position

Ich habe versucht, eine Schaltfläche hinzuzufügen. Dann habe ich rechts auf den Knopf geklickt. Klicken Sie auf Format Controls -> Eigenschaften -> ausgewählt Nicht verschieben oder Größe mit Zellen. Fehle ich etwas, das das nicht funktioniert?

Danke!

+1

Schaltflächen unterstützen nicht die Art der Positionierung, die Sie versuchen zu setzen. –

+1

Sie könnten eine benutzerdefinierte Schaltfläche für das Menüband erstellen. –

+5

Vielleicht versuchen Sie ein Formular als die Schaltfläche ... was bedeutet, eine nicht-modale Form als die Schaltfläche, auf eine Position gesetzt werden, wenn bei Blatt öffnen Ereignis ausgelöst wird ... – bonCodigo

Antwort

1

Hier ist die Idee, dass ich den Kommentar früher heute :) :) Normalerweise können wir eine Floating User Form erhalten, indem Sie die Modal-Eigenschaft des Formulars auf 0 setzen, die in der Tat ein Modeless Zustand ist.

Basispunkte zu berücksichtigen:

  • Blick & Gefühl der Form, um es wie ein Knopf aussehen (nicht Titelleiste anzeigen/Nicht Resizable/ Versteckt Close Button etc.)
  • Einstellung der Position der Knopf
  • , welches Ereignis die Form-Taste (Workbook Open)
  • Was Sie tun würde Form Initialize Ereignis
  • auslösen soll Whcih Events sollte es auf die gleiche Position lebendig

Weitere Punkte kleben bleiben zu berücksichtigen:

Der Artikel gehören die folgenden Informationen, und bitte auch die letzte Zeile beachten :)

Sie geben Ihnen Funktionen zugreifen, die nicht von VBA sind oder von die Objekte (UserForms, Arbeitsmappen usw.), aus denen ein VBA-Projekt besteht. Wenn Sie eine API aufrufen, umgehen Sie VBA und rufen direkt unter Windows auf. Dies bedeutet, dass Sie nicht die Sicherheitsmechanismen wie die Typprüfung erhalten, die VBA normalerweise bietet. Wenn Sie einen ungültigen Wert an eine API übergeben oder (ein sehr häufiger Fehler) einen ByRef-Parameter anstelle eines ByVal-Parameters verwenden, wird Excel höchstwahrscheinlich sofort und vollständig abstürzen und Sie werden alle Ihre nicht gespeicherten Daten verlieren. Ich empfehle, dass Sie Ihre Arbeit speichern, bevor Sie eine API-Funktion aufrufen, bis Sie sicher sind, dass Ihre API-Aufrufe solide sind.

2

Ich weiß, dass dieser Beitrag alt ist, aber hier ist für jeden, der es nützlich sein könnte. Die VisibleRange-Eigenschaft von ActiveWindow kann dieses Problem lösen.Verwenden Sie etwas wie folgt:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    With ActiveSheet.OLEObjects("MY_BUTTON'S_NAME") 
     .Top = ActiveWindow.VisibleRange.Top + ActiveWindow.VisibleRange.Height - 5 
     .Left = ActiveWindow.VisibleRange.Left + ActiveWindow.VisibleRange.Width - .Width - 5 
    End With 
End Sub