thangcola113
Thành viên mới

- Tham gia
- 7/12/10
- Bài viết
- 49
- Được thích
- 8
- Nghề nghiệp
- kiểm toán xây dựng
- Menu này sẽ tồn tại ngay cả khi thoát excell
Chắc có lẽ tác giả muốn thoát file mà không reset hay delete menu đó Thầy!Sao mình hổng hiểu chổ này nghĩa là gì vậy ta? Thoát Excel rồi mà menu vẫn còn, vậy "nó" nằm ở mô? Nằm ngoài Desktop à?
Em diễn đạt chưa rõ nghĩa lắm. Chính xác là như bácHoàng Trọng Nghĩa nói.Sao mình hổng hiểu chổ này nghĩa là gì vậy ta? Thoát Excel rồi mà menu vẫn còn, vậy "nó" nằm ở mô? Nằm ngoài Desktop à?
Em diễn đạt chưa rõ nghĩa lắm. Chính xác là như bácHoàng Trọng Nghĩa nói.
Không delete hay reset menu, để khi mở excell là có ngay menu cá nhân do mình tạo ra.
Giúp em với.
Tạo menu kiểu đó thì khi mở một file khác và bấm vào menu tự tạo thì nó sẽ mở lại cái file có chứa các thủ tục đó, vì thế tôi nghĩ bạn phải tạo một addins thôi.
Tạo addins thì không thể chứa sheet, mà như thế không thể chứa dữ liệu nguồn để tạo menu được (vì dữ liệu này nằm trong sheet).Tạo menu kiểu đó thì khi mở một file khác và bấm vào menu tự tạo thì nó sẽ mở lại cái file có chứa các thủ tục đó, vì thế tôi nghĩ bạn phải tạo một addins thôi.
Tạo addins thì không thể chứa sheet, mà như thế không thể chứa dữ liệu nguồn để tạo menu được (vì dữ liệu này nằm trong sheet).
.
Em xin mạo mụi hỏi ké pic này 1 tí, em cũng đang vướng vào vấn đề anh Nghĩa nói, và chưa có cách khắc phục. Mong bác hướng dẫn khắc phục cho em vấn đề này với ạ.Tạo menu kiểu đó thì khi mở một file khác và bấm vào menu tự tạo thì nó sẽ mở lại cái file có chứa các thủ tục đó.
Em có sử dụng file tạo menu trên diễn đàn.
Nhờ các bác giúp em chỉnh sửa menu này để:
- Menu này sẽ tồn tại ngay cả khi thoát excell
Thanks
Bạn chọn thẻ Add-ins là thấy. Tức là tôi mở trên Excel 2007 thì thấy ở đấy.Menu là gì vậy bạn nó nằm chỗ nào thế? Sao mình mở file lên bấm nút không thấy hiện tượng gì nhỉ? Mong các bạn chỉ giáo!
Bạn vướng vấn đề gì? Nó như thế nào, bạn có thể nói rõ hơn được không? Bạn cứ đưa vấn đề vướng mắc đó lên đây, biết đâu sẽ được nhiều người giúp bạn!Em xin mạo mụi hỏi ké pic này 1 tí, em cũng đang vướng vào vấn đề anh Nghĩa nói, và chưa có cách khắc phục. Mong bác hướng dẫn khắc phục cho em vấn đề này với ạ.
Private Sub MainMenu()
Dim TrangChu As String
Dim ThuTuc1 As String
Dim ThuTuc2 As String
Dim CSDL As String, _
QLNhap As String, _
QLXuat As String, _
QLSuDung As String, _
TaoFileMoi As String
TrangChu = "Trang Ch" & ChrW(7911)
ThuTuc1 = "Th" & ChrW(7911) & " t" & ChrW(7909) & "c 1"
ThuTuc2 = "Th" & ChrW(7911) & " t" & ChrW(7909) & "c 2"
CSDL = "C" & ChrW(417) & " S" & ChrW(7903) & " D" & ChrW(7919) & " Li" & ChrW(7879) & "u"
QLNhap = "Qu" & ChrW(7843) & "n Lý Nh" & ChrW(7853) & "p"
QLXuat = "Qu" & ChrW(7843) & "n Lý Xu" & ChrW(7845) & "t"
QLSuDung = "Qu" & ChrW(7843) & "n Lý S" & ChrW(7917) & " D" & ChrW(7909) & "ng"
TaoFileMoi = "T" & ChrW(7841) & "o File M" & ChrW(7899) & "i"
With CommandBars("Worksheet Menu Bar")
.Reset
.Controls("Help").Delete
'Trang Chu:
'--------------------------------------------------
.Controls.Add(Type:=1, Before:=10).Caption = TrangChu
With .Controls(TrangChu)
.Style = 3
.FaceId = 59
.BeginGroup = True
.OnAction = "MyHome"
End With
'Thu tuc 1:
'--------------------------------------------------
.Controls.Add(Type:=1, Before:=11).Caption = ThuTuc1
With .Controls(ThuTuc1)
.Style = 3
.FaceId = 6743
.BeginGroup = True
.OnAction = "ThuTucMot"
End With
'Thu tuc 2:
'--------------------------------------------------
.Controls.Add(Type:=1, Before:=12).Caption = ThuTuc2
With .Controls(ThuTuc2)
.Style = 3
.FaceId = 6735
.OnAction = "ThuTucHai"
.BeginGroup = True
End With
'Co So Du Lieu:
'--------------------------------------------------
.Controls.Add(Type:=10, Before:=13).Caption = CSDL
With .Controls(CSDL)
.BeginGroup = True
'Quan ly nhap:
'--------------------------------------------------
.Controls.Add(Type:=1, Before:=1).Caption = QLNhap
With .Controls(QLNhap)
.FaceId = 1087
.OnAction = "QuanLyNhap"
.BeginGroup = True
End With
'Quan ly xuat:
'--------------------------------------------------
.Controls.Add(Type:=1, Before:=2).Caption = QLXuat
With .Controls(QLXuat)
.FaceId = 1087
.OnAction = "QuanLyXuat"
.BeginGroup = True
End With
'Quan ly su dung:
'--------------------------------------------------
.Controls.Add(Type:=1, Before:=3).Caption = QLSuDung
With .Controls(QLSuDung)
.FaceId = 1087
.OnAction = "QuanLySuDung"
.BeginGroup = True
End With
'Tao file moi:
'--------------------------------------------------
.Controls.Add(Type:=1, Before:=4).Caption = TaoFileMoi
With .Controls(TaoFileMoi)
.FaceId = 23
.OnAction = "NewFile"
.BeginGroup = True
End With
End With
End With
End Sub
'*******************************************************************************************
Private Sub MainPopUp()
Dim TrangChu As String
Dim ThuTuc1 As String
Dim ThuTuc2 As String
Dim CSDL As String, _
QLNhap As String, _
QLXuat As String, _
QLSuDung As String
TrangChu = "Trang Ch" & ChrW(7911)
ThuTuc1 = "Th" & ChrW(7911) & " t" & ChrW(7909) & "c 1"
ThuTuc2 = "Th" & ChrW(7911) & " t" & ChrW(7909) & "c 2"
CSDL = "C" & ChrW(417) & " S" & ChrW(7903) & " D" & ChrW(7919) & " Li" & ChrW(7879) & "u"
QLNhap = "Qu" & ChrW(7843) & "n Lý Nh" & ChrW(7853) & "p"
QLXuat = "Qu" & ChrW(7843) & "n Lý Xu" & ChrW(7845) & "t"
QLSuDung = "Qu" & ChrW(7843) & "n Lý S" & ChrW(7917) & " D" & ChrW(7909) & "ng"
With Application.CommandBars("Cell")
.Reset
.Controls("cut").BeginGroup = True
'Trang Chu:
'--------------------------------------------------
.Controls.Add(Type:=1, Before:=1).Caption = TrangChu
With .Controls(TrangChu)
.Style = 3
.FaceId = 59
.BeginGroup = True
.OnAction = "MyHome"
End With
'Thu tuc 1:
'--------------------------------------------------
.Controls.Add(Type:=1, Before:=2).Caption = ThuTuc1
With .Controls(ThuTuc1)
.Style = 3
.FaceId = 6743
.BeginGroup = True
.OnAction = "ThuTucMot"
End With
'Thu tuc 2:
'--------------------------------------------------
.Controls.Add(Type:=1, Before:=3).Caption = ThuTuc2
With .Controls(ThuTuc2)
.Style = 3
.FaceId = 6735
.OnAction = "ThuTucHai"
End With
'Co So Du Lieu:
'--------------------------------------------------
.Controls.Add(Type:=10, Before:=4).Caption = CSDL
With .Controls(CSDL)
.BeginGroup = True
'Quan ly nhap:
'--------------------------------------------------
.Controls.Add(Type:=1, Before:=1).Caption = QLNhap
With .Controls(QLNhap)
.FaceId = 1087
.OnAction = "QuanLyNhap"
End With
'Quan ly xuat:
'--------------------------------------------------
.Controls.Add(Type:=1, Before:=2).Caption = QLXuat
With .Controls(QLXuat)
.FaceId = 1087
.OnAction = "QuanLyXuat"
.BeginGroup = True
End With
'Quan ly su dung:
'--------------------------------------------------
.Controls.Add(Type:=1, Before:=3).Caption = QLSuDung
With .Controls(QLSuDung)
.FaceId = 1087
.OnAction = "QuanLySuDung"
.BeginGroup = True
End With
End With
'--------------------------------------------------
'Gian tien cac nut khong can thiet (neu muon):
'--------------------------------------------------
On Error Resume Next
.Controls("Insert Row").Delete
.Controls("Delete Row").Delete
.Controls("Insert...").Delete
.Controls("Delete...").Delete
.Controls("Clear Contents").Delete
.Controls("Format Cells...").Delete
.Controls("Pick From Drop-down List...").Delete
.Controls("Add Watch").Delete
.Controls("Create List...").Delete
.Controls("Hyperlink...").Delete
.Controls("Look Up...").Delete
End With
End Sub
Sub AddToolBars()
Call MainMenu
Call MainPopUp
End Sub
Sub ResetToolBars()
CommandBars("Worksheet Menu Bar").Reset
CommandBars("Cell").Reset
End Sub
Sub MyHome()
MsgBox "You click on MyHome"
End Sub
Sub ThuTucMot()
MsgBox "You click on ThuTucMot"
End Sub
Sub ThuTucHai()
MsgBox "You click on ThuTucHai"
End Sub
Sub QuanLyNhap()
MsgBox "You click on QuanLyNhap"
End Sub
Sub QuanLyXuat()
MsgBox "You click on QuanLyXuat"
End Sub
Sub QuanLySuDung()
MsgBox "You click on QuanLySuDung"
End Sub
Sub NewFile()
MsgBox "You click on NewFile"
End Sub
Private Sub Workbook_Open()
Call AddToolBars
End Sub
Em có học cách tạo menu từ GPE, trong menu có các menu cấp 1. Điều em còn vướng là khi save as ra các file khác để tính toán thì khi chạy code ở menu cấp 1 ở file mới thì file gốc đã thoát tự mở lên. Em có dùng thủ tục Application.CommandBars("Worksheet Menu Bar").Reset nhưng cũng bị thế. Em nghĩ là do code ở các menu 1 giống nhau nên khi chạy ở file này nó cũng sẽ tự mở file. Em úp dạng menu trong file lên mong các anh giúp.Bạn vướng vấn đề gì? Nó như thế nào, bạn có thể nói rõ hơn được không? Bạn cứ đưa vấn đề vướng mắc đó lên đây, biết đâu sẽ được nhiều người giúp bạn!
Trong file của bạn, tôi không thấy thủ tục nào để chạy cho nút lệnh thì sao mà nó thực thi lệnh được?Em có học cách tạo menu từ GPE, trong menu có các menu cấp 1. Điều em còn vướng là khi save as ra các file khác để tính toán thì khi chạy code ở menu cấp 1 ở file mới thì file gốc đã thoát tự mở lên. Em có dùng thủ tục Application.CommandBars("Worksheet Menu Bar").Reset nhưng cũng bị thế. Em nghĩ là do code ở các menu 1 giống nhau nên khi chạy ở file này nó cũng sẽ tự mở file. Em úp dạng menu trong file lên mong các anh giúp.
Với file AddIns các bạn nên dùng các tool liên quan đến các thủ tục định dạng, in ấn, hàm người dùng, không nên dùng những thủ tục "chuyên dùng" của một file nào đó để cho addins thực thi. Với những file "chuyên dùng" thì tạo Menu riêng biệt cho nó.Em úp lên 2 thủ tục phân tích vật tư và đơn giá trước thuế, vì em nghì code ở các thủ tục chỉ thực hiện tính toán nên hiện tượng mở tự mở file chắc do code tạo menu thiếu thủ tục nào đó.Em có tìm nhiều bài trên diễn đàn mà vẫn chưa giải quyết được.
Sub TaoMenu() Dim cb As CommandBar
Dim cpop As CommandBarPopup
Dim cpop2 As CommandBarPopup
Dim cbtn As CommandBarButton
[COLOR=#ff0000][B] Call XoaMenu[/B][/COLOR]
'Lay tham chieu den thanh trinh don
'Application.CommandBars("Worksheet Menu Bar").Reset
Set cb = Application.CommandBars("Worksheet Menu Bar")
.....
....
End Sub
Tôi đã sửa bài trước, bạn thử xem lại cách đó nhé!Hic em chưa hiểu lắm. Với lại file em đâu có dùng addin gì đâu anh, em chỉ tạo menu chính và các menu con và chạy code trên các menu đó thay vì các sheet em chạy code trên combobox.
Private Sub Workbook_Activate()
TaoMenu
End Sub
Private Sub Workbook_Deactivate()
XoaMenu
End Sub
Active xảy ra khi bạn mở file có sự kiện đó lên, khi mở một file khác thì file của không còn hiện hành nữa nên nó lại xảy ra sự kiện DeActive. Như vậy, khi quay lại file cũ thì sự kiện Active lại xảy ra. Vì thế ở 2 file cùng có Menu và cùng có 2 sự kiện này thì chúng sẽ không bao giờ "đụng độ" Menu lẫn nhau, mở một file mới hay chọn một file hiện hành thì thằng cũ tự xóa menu và thằng mới tạo menu cho file mình, quay lại thằng cũ thì thằng mới tự xóa rồi thằng cũ nó lại tạo ra menu của nó, nói nôm na là như vậy.Hay nhỉ, thế mà em ko nghĩ raHic học hỏi ko bít bao nhiêu mới được như anh. ah cái sự kiện Workbook_Deactivate là sao anh giải thích giùm em tí
Sub InsertMenu()
Dim taomenu As CommandBar
Dim ctlPopup As CommandBarPopup
Set taomenu = Application.CommandBars("Worksheet Menu Bar")
With taomenu.Controls
Set ctlPopup = .Add(Type:=msoControlPopup, _
Before:=2)
With ctlPopup
.Caption = "Menututao"
With .Controls.Add
.Caption = "XepLoai"
.OnAction = "Macro1"
End With
With .Controls.Add
.Caption = "Diemtrungbinh"
.OnAction = "Macro2"
End With
End With
End With
End Sub
Sub Macro1()
Range("D3").Select
ActiveCell.FormulaR1C1 = _
"=IF(RC[-1]>=9,""Gioi"",IF(AND((RC[-1]<9),(RC[-1]>=7)),""Kha"",""TB""))"
Range("D3").Select
Selection.AutoFill Destination:=Range("D3:D6"), Type:=xlFillDefault
End Sub
Cho mình mượn chủ đề này để hỏi, mình có một đoạn code tạo menu trong excel (sưu tầm trên mạng), tạo ra Menututao, trong đó có hai Menu con là XepLoai và DiemTrungBinh, bây giờ mình muốn khi chọn vào menu con XepLoai thì cột xếp loại trong file excel đính kèm sẽ hiển thị kết quả Gioi, Kha và TB, nhưng mình không biết phải làm thế nào? Mình vào cửa sổ VBA chọn Insert -> Module, và copy đoạn code tạo ra Menu vào đó và cho Run thì tạo được Menututao, Vậy còn đoạn code dành cho cột xếp loại phải viết vào chổ nào? Mong mọi người giúp đỡ.
Mã:Sub InsertMenu() Dim taomenu As CommandBar Dim ctlPopup As CommandBarPopup Set taomenu = Application.CommandBars("Worksheet Menu Bar") With taomenu.Controls Set ctlPopup = .Add(Type:=msoControlPopup, _ Before:=2) With ctlPopup .Caption = "Menututao" With .Controls.Add .Caption = "XepLoai" .OnAction = "Macro1" End With With .Controls.Add .Caption = "Diemtrungbinh" .OnAction = "Macro2" End With End With End With End Sub
Code xếp loại (mình dùng macro ghi lại)
Mã:Sub Macro1() Range("D3").Select ActiveCell.FormulaR1C1 = _ "=IF(RC[-1]>=9,""Gioi"",IF(AND((RC[-1]<9),(RC[-1]>=7)),""Kha"",""TB""))" Range("D3").Select Selection.AutoFill Destination:=Range("D3:D6"), Type:=xlFillDefault End Sub
Private Sub Auto_Open()
InsertMenu
End Sub
Private Sub Auto_Close()
DeleteMyMenus
End Sub
Private Sub DeleteMyMenus()
On Error Resume Next
CommandBars("Worksheet Menu Bar").Controls("Menututao").Delete
End Sub
Sub InsertMenu()
Dim ctlPopup As CommandBarPopup
DeleteMyMenus
Set ctlPopup = CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup, Before:=2)
With ctlPopup
.Caption = "Menututao"
With .Controls.Add
.Caption = "XepLoai"
.OnAction = "Macro1"
End With
With .Controls.Add
.Caption = "Diemtrungbinh"
.OnAction = "Macro2"
End With
End With
End Sub
Sub Macro1()
' code
End Sub
Sub Macro2()
' code
End Sub