2013-01-15 12 views
5

Potrzebuję pomocy przy dołączaniu przycisku Excel/VBA na arkuszu Excel. Potrzebuję go, aby pozostać w tej samej pozycji na ekranie niezależnie od tego, jak przewijam lub powiększam. Najlepiej, potrzebuję tego na dole po lewej lub prawej stronie ekranu.Excel: Naprawiono pozycję przycisku

Próbowałem dodać przycisk. Następnie kliknąłem prawym przyciskiem myszy. Kliknięto Formanty formatowania -> Właściwości -> wybrane Nie przesuwaj ani nie zmieniaj wielkości komórek. Czy brakuje mi czegoś, co sprawia, że ​​to nie działa?

Dzięki!

+1

Przyciski nie obsługują rodzaju pozycjonowania, które próbujesz ustawić. –

+1

Możesz zajrzeć do tworzenia niestandardowego przycisku wstążki. –

+5

Być może wypróbuj formularz jako przycisk ... co oznacza, że ​​jako przycisk ma postać bez formy, ustawioną na pozycję, na której ma się dziać zdarzenie otwierania arkusza ... – bonCodigo

Odpowiedz

1

Oto pomysł, który przedstawiłem wcześniej dzisiaj :) Zazwyczaj możemy uzyskać Floating User Form, ustawiając właściwość Modal formularza na 0, który jest rzeczywiście stanem Modeless.

Podstawowe Punkty do rozważenia:

  • Look & wyczuciem formy, aby wyglądać jak przycisk (nie pokazują tytułowy bar/nie Resizable/ Ukryte przycisk Zamknij etc)
  • Ustawianie pozycji przycisk
  • które zdarzenie powinno wywołać formularz przycisku (WorkBook Otwórz)
  • Co byś zrobił z Form Initialize Event
  • Whcih Zdarzenia powinny zachować to trzymać się tej samej pozycji żywcem

kolejne punkty do rozważenia:

W artykule zawierać następujące informacje i proszę zwrócić uwagę na ostatnią linię, jak również :)

Dają Ci dostęp do funkcji, które nie są dostępne lub z VBA obiekty (UserForms, Skoroszyty itp.), które składają się na projekt VBA. Gdy wywołujesz interfejs API, omijasz VBA i wywołujesz bezpośrednio w systemie Windows. Oznacza to, że nie otrzymujesz mechanizmów bezpieczeństwa, takich jak sprawdzanie typu, które zwykle zapewnia VBA. Jeśli przekażesz nieprawidłową wartość do API lub (bardzo często popełniany błąd) użyjesz parametru ByRef zamiast parametru ByVal, najprawdopodobniej całkowicie i natychmiast zawiesisz program Excel, a stracisz całą niezapisaną pracę. Zaleca się, aby do czasu upewnienia się, że wywołania API są trwałe, zapisujesz swoją pracę przed wywołaniem funkcji API.

2

Wiem, że ten post jest stary, ale dla każdego może być przydatny. Właściwość VisibleRange ActiveWindow może rozwiązać ten problem.Użyj czegoś takiego:

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 
Powiązane problemy