Tạo nút lệnh rơi theo thanh cuộn? (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

nqdn2010

Optimal Сasual Dating - Actual Girls
Tham gia
22/2/12
Bài viết
267
Được thích
15
Giới tính
Nam
Nghề nghiệp
Health
Xin hỏi: Trong excel có thể tạo nút lệnh tự chạy theo màng hình không?
Ví dụ: Giả sử đang ở trang 1( từ ô A1:O25) ta tạo 1 nút lệnh , khi ta trượt xuống trang 2 (từ ô A26:O50) thì nút lệnh cũng "rơi" theo ở trang 2, . . . . Khi ta nhấn vào nút lệnh thì trở về tranh đầu.
- Mục đích nút lệnh này giúp ta quay lên trang đầu nhanh đối với sheet sử dụng nhiều dữ liệu.
Thân chào!
 
Lần chỉnh sửa cuối:
Anh thông cảm, mục đích là để học thêm chiêu mới của các sư phụ!
Chỉ giáo em nhé anh ndu!
Cám ơn anh

Code thì chỉ 1 dòng này thôi
Application.Goto Range("A1"), True
Còn cái vụ Nút nhấn "chạy theo", có thể dùng sự kiện SelectionChange để xử
 
Upvote 0
Em gởi anh tập tin đính kèm!Nhờ anh chỉ giúp cách CommandButton.1 rơi theo thanh cuộn!
CÁm ơn anh!
 

File đính kèm

Upvote 0
Em gởi anh tập tin đính kèm!Nhờ anh chỉ giúp cách CommandButton.1 rơi theo thanh cuộn!
CÁm ơn anh!
Cho nút lệnh trượt theo thanh cuộn thì mình chưa làm được, nhưng trước mắt thì thế này: Muốn nút lệnh nằm tại chỗ nào thì bạn Double click chuột tại chỗ đó.
[GPECODE=vb]Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
With CommandButton1
.Top = Target.Top: .Left = Target.Left
End With
End Sub[/GPECODE]
Ở đây mình sử dụng sự kiện Worksheet_BeforeDoubleClick thay vì sự kiện Worksheet_BeforeRightClick hay Worksheet_SelectionChange vì thấy sự kiện này tiện hơn, vì sự kiện BeforeRightClick thì sẽ làm mất các tác dụng thú vị của chuột phải, còn sự kiện SelectionChange thì có vẻ hơi rườm rà, chẳng hạn mình muốn chọn ô để nhập dữ liệu mà cái nút lệnh nó cứ đứng ì chỗ đó thì cũng khó chịu. Nếu bạn thích sử dụng sự kiện nào trong 2 sự kiện kia thì cứ thay đổi thử.
 
Upvote 0
Em gởi anh tập tin đính kèm!Nhờ anh chỉ giúp cách CommandButton.1 rơi theo thanh cuộn!
CÁm ơn anh!

mình làm thử nha

bạn thêm đoạn code này vào sheet1


Private Sub Worksheet_SelectionChange(ByVal Target As Range)


If Not Intersect(Target, [a:a]) Is Nothing Then
With ActiveSheet.CommandButton1
.Left = target.Left + target.Width
.Top = target.Top - 50
End With
End If

End Sub

nó sẻ xuất hiện khi bạn nhấp vào cell nào đó trên cột A, còn muốn di chuyển đến đâu nó cũng xuất hiện thì bỏ 2 dòng màu xanh đi

sorry, ko đọc kỹ yêu cầu của bạn, cái này phải di chuyển qua các cell, còn trượt thì ko ăn thua
 
Lần chỉnh sửa cuối:
Upvote 0
Cho nút lệnh trượt theo thanh cuộn thì mình chưa làm được, nhưng trước mắt thì thế này: Muốn nút lệnh nằm tại chỗ nào thì bạn Double click chuột tại chỗ đó.
[GPECODE=vb]Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
With CommandButton1
.Top = Target.Top: .Left = Target.Left
End With
End Sub[/GPECODE]
Ở đây mình sử dụng sự kiện Worksheet_BeforeDoubleClick thay vì sự kiện Worksheet_BeforeRightClick hay Worksheet_SelectionChange vì thấy sự kiện này tiện hơn, vì sự kiện BeforeRightClick thì sẽ làm mất các tác dụng thú vị của chuột phải, còn sự kiện SelectionChange thì có vẻ hơi rườm rà, chẳng hạn mình muốn chọn ô để nhập dữ liệu mà cái nút lệnh nó cứ đứng ì chỗ đó thì cũng khó chịu. Nếu bạn thích sử dụng sự kiện nào trong 2 sự kiện kia thì cứ thay đổi thử.
Cám ơn bạn thật nhiếu ! Tôi đã học thêm được một điều hay nữa. Áp dụng vào rất tốt.
Mong mọi người giúp tôi giải quyết tiếp vấn đề nhé!
 
Upvote 0
Em gởi anh tập tin đính kèm!Nhờ anh chỉ giúp cách CommandButton.1 rơi theo thanh cuộn!
CÁm ơn anh!

Có những thứ ta không thể thực hiện được, trường hợp của bạn là như thế vì không có sự kiện scroll.

Tuy nhiên, không cần code ta vẫn có thể làm cho nút lệnh đứng một chổ, đó là dùng freeze panes.
 

File đính kèm

Upvote 0
Có những thứ ta không thể thực hiện được, trường hợp của bạn là như thế vì không có sự kiện scroll.

Tuy nhiên, không cần code ta vẫn có thể làm cho nút lệnh đứng một chổ, đó là dùng freeze panes.

Dùng Freeze Panes cũng tốt
Nhưng theo tác giả nói thì cái nút ấy dùng để di chuyển đến đầu trang. Giờ nếu đã có freeze panes rồi thì cái nút ấy có phải là thừa không?
Tóm lại: Nếu Freeze panes thì khỏi nút, khỏi code gì ráo
Mà thậm chí không có freeze panes thì cứ Ctrl + Home (như tôi đã nói từ đầu) cũng là giải pháp quá đơn giản rồi
(tại tác giả cứ thích.. code kiết gì đó thôi...)
 
Upvote 0
Thực ra ý tôi khi tạo nút lệnh rơi theo thanh cuộn là:để mình thao tác nhanh để đến được ô cần đến theo chỉ định.
 
Upvote 0
Thực ra ý tôi khi tạo nút lệnh rơi theo thanh cuộn là:để mình thao tác nhanh để đến được ô cần đến theo chỉ định.

Thì như tôi đã nói đó, bạn muốn để một đống nút lệnh để thao tác ngay phần freeze panes cũng không ảnh hưởng đến vấn đề cuộn lên cuộn xuống; nhưng tại sao bạn không dùng Menu tự tạo có phải hay hơn không? Cần gì thì chuột phải, hoặc bấm nút lệnh trên menu hay toolbar, cần chi phải chạy nút theo thanh trượt cho mệt vậy ta?
 
Upvote 0
Upvote 0
Đây mới chính là giải pháp tốt đây!
Tại thấy đề tài này nó lạ và hay nên mục đích học hỏi các anh. Tiện khi có việc vận dụng vào. Vã lại khi mở bảng tính nút lệnh rơi xuống theo để tiện thao tác làm bảng tính sinh động hơn.
 
Upvote 0
Tại thấy đề tài này nó lạ và hay nên mục đích học hỏi các anh. Tiện khi có việc vận dụng vào. Vã lại khi mở bảng tính nút lệnh rơi xuống theo để tiện thao tác làm bảng tính sinh động hơn.

Bạn có thấy công cụ "Bộ Gõ" của diễn đàn mình không? Nó nằm bên trái, phía dưới màn hình đấy, nó chạy theo scroll đấy! Có thấy sinh động gì không? Dù cho cuộn như thế nào thì nó cũng đứng chết một chỗ thôi.
 
Upvote 0
Bạn có thấy công cụ "Bộ Gõ" của diễn đàn mình không? Nó nằm bên trái, phía dưới màn hình đấy, nó chạy theo scroll đấy! Có thấy sinh động gì không? Dù cho cuộn như thế nào thì nó cũng đứng chết một chỗ thôi.
Cám ơn nhận xét của bạn.
Mục đích mình muốn biết thêm cái mới trong excel thôi. Để trau dồi và học hỏi.
 
Lần chỉnh sửa cuối:
Upvote 0
Buồn quá!
Xem lại bài này và làm thử chơi!
Các bạn tải file về mở lên, bấm vào nút 'Run' rồi cuộn chuột lên xuống xem cái nút có chạy theo không nha
Nếu không có gì trục trặc thì cái nút sẽ chạy được 4 chiều: Lên, xuống, trái, phải ---> Tóm lại, nó luôn nằm trong tầm mắt ta
Mã:
Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
Public shp As Shape
Sub StartTimer()
  On Error Resume Next
  StopTimer
  SetTimer Application.hWnd, 1, 100, AddressOf TimeProc
End Sub
Sub StopTimer()
  On Error Resume Next
  KillTimer Application.hWnd, 1
End Sub
Private Function TimeProc(ByVal H As Long, ByVal nMSG As Long, ByVal nID As Long, ByVal nTsys As Long)
  Dim lR As Long, lC As Long
  On Error Resume Next
  lR = ActiveWindow.ScrollRow
  lC = ActiveWindow.ScrollColumn
  With Cells(lR + 5, lC + 5)
    shp.Top = .Top: shp.Left = .Left
  End With
End Function
Sub Main()
  If shp Is Nothing Then Set shp = Sheet1.Shapes("shp")
  With shp.TextFrame.Characters
     Run IIf(.Text = "Run", "StartTimer", "StopTimer")
    .Text = IIf(.Text = "Run", "Stop", "Run")
  End With
End Sub
 

File đính kèm

Upvote 0
Buồn quá!
Xem lại bài này và làm thử chơi!
Các bạn tải file về mở lên, bấm vào nút 'Run' rồi cuộn chuột lên xuống xem cái nút có chạy theo không nha
Nếu không có gì trục trặc thì cái nút sẽ chạy được 4 chiều: Lên, xuống, trái, phải ---> Tóm lại, nó luôn nằm trong tầm mắt ta
Mã:
Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
Public shp As Shape
Sub StartTimer()
  On Error Resume Next
  StopTimer
  SetTimer Application.hWnd, 1, 100, AddressOf TimeProc
End Sub
Sub StopTimer()
  On Error Resume Next
  KillTimer Application.hWnd, 1
End Sub
Private Function TimeProc(ByVal H As Long, ByVal nMSG As Long, ByVal nID As Long, ByVal nTsys As Long)
  Dim lR As Long, lC As Long
  On Error Resume Next
  lR = ActiveWindow.ScrollRow
  lC = ActiveWindow.ScrollColumn
  With Cells(lR + 5, lC + 5)
    shp.Top = .Top: shp.Left = .Left
  End With
End Function
Sub Main()
  If shp Is Nothing Then Set shp = Sheet1.Shapes("shp")
  With shp.TextFrame.Characters
     Run IIf(.Text = "Run", "StartTimer", "StopTimer")
    .Text = IIf(.Text = "Run", "Stop", "Run")
  End With
End Sub

Hay thật! Kể cả khi Ctrl+ mũi tên* nó cũng chạy đúng! Chắc phải chăm học API hơn nữa thôi!

Cám ơn Thầy.
 
Upvote 0
Hay thật! Kể cả khi Ctrl+ mũi tên* nó cũng chạy đúng! Chắc phải chăm học API hơn nữa thôi!

Cám ơn Thầy.

Mấy cái SetTimer, KillTimer cũng khá đơn giản. Khi dùng 2 hàm này thường sẽ có thêm hàm TimeProc. Đây mới là hàm chính để điều khiển, và sau khi gọi SetTimer, nó sẽ chạy như 1 vòng lập (đến khi nào KillTimer được gọi thì ngưng)
------------------------------------------------
Tại buồn nên làm chơi thôi chứ cái trò tào lao này tôi chẳng đời nào dùng
Ẹc... Ẹc...
 
Upvote 0
Mấy cái SetTimer, KillTimer cũng khá đơn giản. Khi dùng 2 hàm này thường sẽ có thêm hàm TimeProc. Đây mới là hàm chính để điều khiển, và sau khi gọi SetTimer, nó sẽ chạy như 1 vòng lập (đến khi nào KillTimer được gọi thì ngưng)
------------------------------------------------
Tại buồn nên làm chơi thôi chứ cái trò tào lao này tôi chẳng đời nào dùng
Ẹc... Ẹc...
Cám ơn anh nhiều!
Em sử dụng Excel 2003. Hay tập tin anh bị lỗi em tải về không mở được.
Chép Code của anh về, em mò mãi cũng bó tay luôn.
Nghe anh Trọng Nghĩa tả nó hoạt động tốt, không được chiêm ngưỡng tận mắt thèm chết đi được.
Mong Anh Ndu gởi lại tập tin Excel 2003. Cám ơn anh rất nhiều!Chúc anh vui khỏe.
 
Upvote 0
Cám ơn anh nhiều!
Em sử dụng Excel 2003. Hay tập tin anh bị lỗi em tải về không mở được.
Chép Code của anh về, em mò mãi cũng bó tay luôn.
Nghe anh Trọng Nghĩa tả nó hoạt động tốt, không được chiêm ngưỡng tận mắt thèm chết đi được.
Mong Anh Ndu gởi lại tập tin Excel 2003. Cám ơn anh rất nhiều!Chúc anh vui khỏe.

Ôi trời ơi! Năm 2013 rồi bạn à, còn xài 2003 nữa sao?
 

File đính kèm

Upvote 0
Ôi trời ơi! Năm 2013 rồi bạn à, còn xài 2003 nữa sao?
- Tính em rất trung thành với đồ cũ mà có ích lắm (Kiến thức có hạn, sài đồ mới bối rối vô cùng).
- Em sẽ cố gắng học thêm và tiếp cận cái mới.
-Anh ndu Khi em gán nut "run" thực thi lệnh nào đó thì như thế nào hả anh, chú để nó rơi như vậy phí quá.
- Cám ơn anh nhiều! Đúng là không hỗ danh. Excel còn chỗ nào anh không biết không anh!!!
Chúc anh vui khỏe!
 
Upvote 0
-Anh ndu Khi em gán nut "run" thực thi lệnh nào đó thì như thế nào hả anh, chú để nó rơi như vậy phí quá.
!

Đây chỉ là ví dụ để nó "rơi" thôi. Đương nhiên trong thực tế chả ai lại bấm vào cái nút để nó "rơi chơi chơi" vậy
Nút ấy đang liên kết với Sub Main, giờ muốn làm gì khác thì hãy viết sub khác rồi liên kết Sub ấy với nút
Còn việc kích hoạt sự kiện thì:
- Sub StartTimer để kích hoạt sự kiện.. "rơi"
- Sub StopTimer để tắt sự kiện
Vậy thôi! Bạn tùy ý chỉnh sửa
Tôi lấy ví dụ:
- Cái nút ấy dùng để di chuyển đến 1 sheet khác (tên là TONG HOP chẳng hạn)
- Giờ ta tạo phím tắt Ctrl + Shift + S để gọi sub StartTimer (để kích hoạt sự kiện)
- Tạo thêm phím tắt Ctrl + Shift + E để gọi sub StopTimer (để tắt sự kiện)
- Vậy, tại sheet1, chỉ cần bấm tổ hợp phím Ctrl + Shift + S là cái vụ "rơi rơi" ấy sẽ hoạt động ---> Khi nhấn váo nút, lập tức di chuyển sang sheet TONG HOP
Xem file thí nghiệm nhé
 

File đính kèm

Upvote 0
Đây chỉ là ví dụ để nó "rơi" thôi. Đương nhiên trong thực tế chả ai lại bấm vào cái nút để nó "rơi chơi chơi" vậy
Nút ấy đang liên kết với Sub Main, giờ muốn làm gì khác thì hãy viết sub khác rồi liên kết Sub ấy với nút
Còn việc kích hoạt sự kiện thì:
- Sub StartTimer để kích hoạt sự kiện.. "rơi"
- Sub StopTimer để tắt sự kiện
Vậy thôi! Bạn tùy ý chỉnh sửa
Tôi lấy ví dụ:
- Cái nút ấy dùng để di chuyển đến 1 sheet khác (tên là TONG HOP chẳng hạn)
- Giờ ta tạo phím tắt Ctrl + Shift + S để gọi sub StartTimer (để kích hoạt sự kiện)
- Tạo thêm phím tắt Ctrl + Shift + E để gọi sub StopTimer (để tắt sự kiện)
- Vậy, tại sheet1, chỉ cần bấm tổ hợp phím Ctrl + Shift + S là cái vụ "rơi rơi" ấy sẽ hoạt động ---> Khi nhấn váo nút, lập tức di chuyển sang sheet TONG HOP
Xem file thí nghiệm nhé
Cám ơn Anh! Thật tuyệt vời. Em không nghĩ rằng Excel lại làm được việc nay, ngoài sức tượng tượng. Sự kiện này theo em thấy rất hay, theo anh thì sao.
- Sẵn tiện anh vui lòng chỉ em nút lệnh, khi bấm chỉ in những trang có dữ liệu, còn rỗng thì không in mặt dù có "tiêu đề đóng băng". VD: Trang 1 từ Ô A1 => A26, Trang 2 từ Ô A27 => A52, Trang 3 từ Ô A53 => A79, . . . , Dữ liệu chỉ từ Ô A1 => Ô A37 Và em chỉ muốn in trang 1 và trang 2 thôi, nhưng "tiêu đề đóng băng" thì ở nhiều trang.
Em muốn làm vậy để tiện cho việc in ấn cho người không rành in ấn trong Excel.
Cám ơn anh!
 
Upvote 0
Cám ơn Anh! Thật tuyệt vời. Em không nghĩ rằng Excel lại làm được việc nay, ngoài sức tượng tượng. Sự kiện này theo em thấy rất hay, theo anh thì sao.
- Sẵn tiện anh vui lòng chỉ em nút lệnh, khi bấm chỉ in những trang có dữ liệu, còn rỗng thì không in mặt dù có "tiêu đề đóng băng". VD: Trang 1 từ Ô A1 => A26, Trang 2 từ Ô A27 => A52, Trang 3 từ Ô A53 => A79, . . . , Dữ liệu chỉ từ Ô A1 => Ô A37 Và em chỉ muốn in trang 1 và trang 2 thôi, nhưng "tiêu đề đóng băng" thì ở nhiều trang.
Em muốn làm vậy để tiện cho việc in ấn cho người không rành in ấn trong Excel.
Cám ơn anh!

Ở đây đang bàn về cái vụ "rơi" và đã giải quyết xong! Vậy những câu hỏi khác xem như là không liên quan
Bạn muốn code in ấn gì đó, vui lòng mở topic khác nhé (sau khi có code, cứ ráp vào là xong)
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom