Tạo menu popup trong EXCEL (1 người xem)

Liên hệ QC

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

kieunhu91

Thành viên mới
Tham gia
7/3/11
Bài viết
15
Được thích
0
Em tìm được bài viết này:
http://dongkhoibentre.com/forum/showthread.php?124-T%E1%BA%A1o-menu-popup-trong-excel
Từ bài viết này có thể biến đổi đi một chút để gọi hàm macro. Giả sử click vào trong popupmenu, chọn thẻ control 1 thì thực thi gọi hàm sub main ()

Nhưng hạn chế của bài viết này là: sẽ không sử dụng được popup của excel như thông thường nữa, các chức năng copy, paste,... sẽ bị mất đi, muốn dùng phải sử dụng phím tắt, khá bất tiện.

Vì vậy, ai có thể giúp em:
-Hoặc là sửa lại code, click chuột phải vào cell A1 thì hiện ra popup menu của mình, ngoài ra ở những chỗ khác thì vẫn là popup menu mặc định của excel
-Hoặc là, thêm vào popup menu mặc định của excel, ngoài các chức năng như copy, paste,... còn có thêm như là control 1, khi click vào đó sẽ gọi hàm sub main () của mình.

Em cảm ơn mọi người nhiều.
 
Được nè:

Mã:
Sub Test()
Dim BlkRng As Range
If UsedRange.Address <> "$A$1" Then
Set BlkRng = Sheet1.UsedRange.SpecialCells(4)
BlkRng.Value = 0
End If
End Sub
Thế nếu dữ liệu trong sheet1 không có bất cứ cell rổng nào thì anh tính sao?
Ẹc... Ẹc... Với SpecialCells mà không dùng On Error e rằng chẳng có cách
 
Upvote 0
Cái này thì mình không dám thử, sợ treo máy, thôi đầu hàng!
Chắc anh tưởng câu "không có bất cứ cell rổng nào" có nghĩa là cả sheet1 đều chứa đầy dữ liệu chăng?
Thật ra hổng phải vậy! Chỉ cần anh mở 1 bảng tính mới tinh, gõ vào vùng A1:C5 kín hết dữ liệu (không chừa cell nào) rồi thử code là được rồi
Với UsedRange, nó sẽ xác định vùng dữ liệu chính là những chổ ta đã từng xài (không phải toàn bộ sheet)
---------------------
Mà nãy giờ hình như ta bàn bị lạc so với đề tài của Topic này rồi ---> Có nên "quăng" mấy bài của anh em mình vào Trung tâm giải thích code không nhỉ?
(dạo này anh thanhlanh tiến bộ ghê)
 
Upvote 0
E thấy hỏi ở đây là thích hợp nhất. Cái ví dụ số 3 trong file của thầy NDU ở post2 e muốn tạo menu cấp con nữa thì lcó thế không ạ?. Loay hoay mãi ko đc.
Ý e là Click chuột my group thì sổ ra my goup2, click my group thì sổ my marco 1, my marco 2..... ??
-\\/.
 
Lần chỉnh sửa cuối:
Upvote 0
E thấy hỏi ở đây là thích hợp nhất. Cái ví dụ số 3 trong file của thầy NDU ở post2 e muốn tạo menu cấp con nữa thì lcó thế không ạ?. Loay hoay mãi ko đc.
Ý e là Click chuột my group thì sổ ra my goup2, click my group thì sổ my marco 1, my marco 2..... ??
-\\/.

Với File PopupMenu_3 bạn copy thủ tục dưới đây thay cho thủ tục cũ (Private Sub BuildPopupMenu())như sau:

Mã:
Private Sub BuildPopupMenu()
    Dim i As Long
    With Application.CommandBars("Cell").Controls.Add(10, , , 1)
        .Caption = "My Group"
        For i = 1 To 4
            With .Controls.Add(1, , , i)
                .Caption = "My Macro " & i
                .OnAction = "Test" & i
[COLOR=#0000ff][B]                .FaceId = 1088
                .BeginGroup = True[/B][/COLOR]
            End With
        Next i
        With .Controls.Add(10, , , 5)
            .Caption = "My Group F1"
            .BeginGroup = True
            For i = 1 To 3
                With .Controls.Add(1, , , i)
                    .Caption = "My Macro " & i
                    .OnAction = "Test" & i
                    .FaceId = 1087
                    .BeginGroup = True
                End With
            Next i
            With .Controls.Add(10, , , 4)
                .Caption = "My Group F2"
                .BeginGroup = True
                For i = 1 To 5
                    With .Controls.Add(1, , , i)
                        .Caption = "My Macro " & i
                        .FaceId = 1086
                        .OnAction = "Test" & i
                        .BeginGroup = True
                    End With
                Next i
            End With
        End With
    End With
End Sub

Ở thủ tục này, ngoài việc thêm Group mới, tôi còn thêm vào các Icon và các đường gạch ngang để phân ra từng thủ tục cho bạn (2 dòng màu xanh)
 

File đính kèm

  • Picture1.jpg
    Picture1.jpg
    61.3 KB · Đọc: 129
Lần chỉnh sửa cuối:
Upvote 0
Thanks a, đúng ý em rồi. Mà sao e add faceid cho My Group, My Group F1, My Group F2 sao ko được nhỉ ? E dùng office 2010
 
Upvote 0
Thanks a, đúng ý em rồi. Mà sao e add faceid cho My Group, My Group F1, My Group F2 sao ko được nhỉ ? E dùng office 2010

Hình như các CommandBar thuộc dạng msoControlPopup (có mũi tên chọn các mục con) thì sẽ không add được FaceId hay sao ấy
Bạn xem các CommandBar chuẩn của Excel, những cái thuộc loại msoControlPopup, có cái nào có FaceId đâu
 
Upvote 0
Hình như các CommandBar thuộc dạng msoControlPopup (có mũi tên chọn các mục con) thì sẽ không add được FaceId hay sao ấy
Bạn xem các CommandBar chuẩn của Excel, những cái thuộc loại msoControlPopup, có cái nào có FaceId đâu

Dạng này không cho add FaceID, nhưng nó không "cự" gì nếu ta add cho nó, nghĩ cũng thấy lạ.
 
Upvote 0
Em muốn khi nhấp vô macro 1 sẽ chuyển đến một sheet mình muốn đến như sheet sổ cái. popupmenu sử dụng cho tất cả các sheet luôn.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Em muốn khi nhấp vô macro 1 sẽ chuyển đến một sheet mình muốn đến như sheet sổ cái. popupmenu sử dụng cho tất cả các sheet luôn.

Bạn click chuột phải vào Sheet Tab, sẽ có 1 danh sách các sheet hiện ra, muốn đến sheet nào thì cứ chọn vào sheet ấy là xong ---> Khỏi cần phải MẶT RÔ MẶT BÍCH gì cả
 
Upvote 0
Bạn click chuột phải vào Sheet Tab, sẽ có 1 danh sách các sheet hiện ra, muốn đến sheet nào thì cứ chọn vào sheet ấy là xong ---> Khỏi cần phải MẶT RÔ MẶT BÍCH gì cả
Em đang làm popupmenu 3 của anh đấy, em thấy lích chuột phải tại bảng tính mình làm luôn thì nó tiện hơn là phải chạy qua bảng điều khiển, rồi mới tới sheet mình cần thì mất thời gian quá.
 
Upvote 0
Em đang làm popupmenu 3 của anh đấy, em thấy lích chuột phải tại bảng tính mình làm luôn thì nó tiện hơn là phải chạy qua bảng điều khiển, rồi mới tới sheet mình cần thì mất thời gian quá.

Đằng nào cũng click phải, vậy click ở đâu mà chẳng được (trên cell hay sheet tab cũng như nhau)
Có mất công gì đâu mà bạn nói bất tiện?
(Hoặc là tôi chưa hiểu bạn đang nói gì ???)
 
Upvote 0
Ý bạn đó hỏi là làm sao để thay vì gọi các hàm Test 1, Test 2, Test 3... thì mình sẽ sửa làm sao để khi click vào đó thì đến Sheet tương ứng VD: Sheet 1, Sheet 2, Sheet 3....
 
Upvote 0
Ý bạn đó hỏi là làm sao để thay vì gọi các hàm Test 1, Test 2, Test 3... thì mình sẽ sửa làm sao để khi click vào đó thì đến Sheet tương ứng VD: Sheet 1, Sheet 2, Sheet 3....

Khi chọn "Application.CommandBars("Cell")" thì bạn đã right-click bất cứ điểm nào trên sheet đó đều có menu "di động" tại đó rồi còn gì nè???
 
Upvote 0
Cho e hỏi với Menu 3 của a ndu, nếu e muốn tuỳ biến tên menu theo ý chứ ko còn My Macro 1, My Macro 2, ... thì làm thế nào?
Em đã thử sửa như code bên dưới mà ko được.
Nhờ các a xem giúp
e cảm ơn!
Mã:
Private Sub BuildPopupMenu()
  Dim i As Long
  With Application.CommandBars("Cell").Controls.Add(10, , , 1)
    .Caption = "TestMTK"
    For i = 1 To 6
      With .Controls.Add(1, , , i)
'        .Caption = "My Macro " & i
        .OnAction = "Test" & i
      End With
    Next i
  End With
End Sub
Private Sub Test1()
    Set myItem = myBar.Controls.Add(Type:=msoControlButton)
    With myItem
        .Caption = "Ten tuy bien"
        .OnAction = "Ten Macro"
        .FaceId = 65
    End With
End Sub
 
Upvote 0
Mã:
Private Sub BuildPopupMenu()
Dim i As Long
  With Application.CommandBars("Cell").Controls.Add(10, , , 1)
    .Caption = "TestMTK"
    For i = 1 To 1
        With .Controls.Add(1, , , i)
            .Caption = "Ten tuy bien 1"
            .OnAction = "TenMacro1"
        End With
[COLOR=#ff0000]        With .Controls.Add(1, , , i)
            .Caption = "Ten tuy bien 2"
            .OnAction = "TenMacro2"
        End With[/COLOR]
    Next i
  End With
End Sub

Mình cũng ko biết gì về code, mới tập mò lại từ ví dụ 3 của ndu thôi.
Bạn thử đoạn code trên thử xem.
muốn nhiêu mục thì copy dòng màu đỏ ra bấy nhiêu.
 
Upvote 0
Trong chế độ Page Break View và Page layout không dùng được. Mình thấy chỉ tác dụng trong chế độ Normal View thôi.
Các bạn giúp mình sửa lại để chạy được ở cả Normal View và Page break view được không.
Thanks các bạn!
 
Upvote 0
Tặng bạn 1 bộ 4 file tạo popup menu từ đơn giản đến phức tạp do tôi tự làm (khá đơn giản) ---> Các chức năng Cut, Copy, Paste... vẫn hoạt động bình thường
Em chào thầy NDU và các anh chị trong diễn đàn.
Máy tính em gặp trường hợp sử dụng code như bài viết trên thì click chuột phải vẫn không thấy menu nào hiện ra cả.
Mặc dù em cho vòng lặp chạy qua các đối tượng của CommandBars thì vẫn có "Cell" xuất hiện. Đem file qua tất cả các máy thì ngon lành, có máy này không được.
Debug thì thấy vẫn bắt lệnh rightclick nhưng lại không xuất hiện được menu chuột phải.
Window 7 Pro SP1, Office 2010 Pro X86. Win và Office này em cài đặt ở tất cả các máy trong công ty.

Mong nhận được phản hồi từ thầy và các anh chị trong diễn đàn.
Thân mến,
 
Upvote 0
Web KT

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

Back
Top Bottom