2013-01-15 42 views
5

Cần một số trợ giúp đính kèm nút Excel/VBA trên trang tính Excel. Tôi cần nó để ở trong cùng một vị trí trên màn hình bất kể cách tôi cuộn hoặc thu phóng. Tốt hơn, tôi cần điều này ở phía dưới bên trái hoặc bên phải của màn hình.Excel: Vị trí nút cố định

Tôi đã thử thêm nút. Sau đó, tôi nhấp chuột phải vào nút. Nhấp vào Điều khiển định dạng -> Thuộc tính -> được chọn Không di chuyển hoặc Kích thước bằng ô. Tôi có thiếu một cái gì đó mà làm cho điều này không hoạt động?

Cảm ơn!

+1

Nút không hỗ trợ loại vị trí bạn đang cố đặt. –

+1

Bạn có thể xem xét việc tạo nút tùy chỉnh cho Ribbon. –

+5

Có thể thử một biểu mẫu dưới dạng nút ... có nghĩa là có một biểu mẫu vô nghĩa như nút, được đặt thành vị trí ở thời điểm trang tính kích hoạt sự kiện mở ... – bonCodigo

Trả lời

1

Đây là ý tưởng mà tôi đã đưa vào nhận xét trước đó hôm nay :) Thông thường chúng ta có thể nhận được một Floating User Form bằng cách đặt thuộc tính Phương thức của biểu mẫu là 0 thực sự là trạng thái Modeless.

điểm cơ bản để xem xét:

  • Look & Feel của mẫu để làm cho nó trông giống như một nút (Không hiển thị tiêu đề bar/Không Resizable/ ẩn nút đóng vv)
  • Thiết lập vị trí của nút
  • những tổ chức sự kiện nên kích hoạt các hình thức-nút (Workbook mở)
  • bạn sẽ làm gì với Form Initialize Event
  • Sự kiện Whcih nên giữ nó dính vào vị trí tương đương sống

Điểm Hơn nữa để xem xét:

Bài báo bao gồm các thông tin sau đây, và xin lưu ý dòng cuối cùng cũng :)

Họ cung cấp cho bạn truy cập vào khả năng mà không có sẵn từ VBA hoặc từ các đối tượng (UserForms, Workbooks, vv,) tạo nên một dự án VBA. Khi bạn gọi một API, bạn đang bỏ qua VBA và gọi trực tiếp trên Windows. Điều này có nghĩa là bạn không nhận được các cơ chế an toàn như kiểm tra kiểu mà VBA thường cung cấp. Nếu bạn vượt qua một giá trị không hợp lệ cho một API hoặc (một lỗi rất phổ biến) sử dụng một tham số ByRef thay vì một tham số ByVal, bạn sẽ rất có thể hoàn toàn và ngay lập tức sụp đổ Excel và bạn sẽ mất tất cả công việc chưa được lưu của bạn. Tôi khuyên bạn nên cho đến khi bạn tự tin rằng các cuộc gọi API của bạn chắc chắn bạn sẽ lưu công việc của mình trước khi gọi một hàm API.

2

Tôi biết bài đăng này cũ, nhưng đây là bất kỳ ai có thể hữu ích. Thuộc tính VisibleRange của ActiveWindow có thể giải quyết vấn đề này.Sử dụng một cái gì đó như thế này:

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 
Các vấn đề liên quan