Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ExitSub ''Coded By Kieu Manh - GPE
Dim MyTab As String: MyTab = "Book" & GetRandName() ''//Tao Tab Ngau nhien ko trung
Dim MyID As String: MyID = "WL" & MyCount() ''//Ten ID cac Tab con Cong them 1
Application.EnableEvents = False
If Not Intersect([B2:B300], Target) Is Nothing Then
If Target.Offset(, 6).Value = Empty Then
Target.Offset(, 6).Value = "OldMenu" ''//Neu Bo trong ta cho Mat cuoi Vao Do cho ko Loi Code
End If
If Target.Value = 1 Then ''//Ap dung cho Tao 1 Tab Moi tren Menu Ribbon
With Target
If .Offset(, 2) <> Empty Then ''//Xu ly loi khi chua dat ten - Lable
If Target.Value = Target.Offset(-1) Then
Target.Value = 2: Target.Select ''//Xu ly loi khi tao moi 2 Tab lien Tiep [MyTab]
MsgBox "Error ... Create Tab Ribbon", 64, "Thông Báo"
GoTo ExitSub:
End If
.Offset(, -1).Value = MyTab ''//Ten Tab moi tren Menu Ribbon
.Offset(, -1).Interior.ColorIndex = 6 ''//To Mau cho de nhin va Kiem soat loi
.Offset(, 1).Value = Empty
.Offset(, 2).Interior.ColorIndex = 6 ''//To Mau cho de nhin va Kiem soat loi
.Offset(, 3).Value = Empty
.Offset(, 4).Value = Empty
.Offset(, 5).Value = GetRandName ''//Key Tip Cua MyTab bat buoc phai co ...Tao So ngau nhien
.Offset(1).Value = 2: Target.Offset(1).Select ''//Goi Y Tao Tab Theo Code...Neu khong Theo trinh tu La Error...
Else
Target.Value = Empty: Target.Offset(, 2).Select
MsgBox "Ban Bo Trong Ten - Label ...Error", 64, "Thông Báo"
End If
End With
ElseIf Target.Value = 2 Then ''//Ap dung cho Tao Nhieu Tab trong 1 Tab [Group = Nhieu Tab]
With Target
If .Offset(, 2) <> Empty Then
If Target.Value = Target.Offset(-1) Then
Target.Value = 3: Target.Select ''//Xu ly loi khi tao moi 2 Tab [Group]...[2 So 2] lien Tiep
MsgBox "Error ... Create Tab Ribbon", 64, "Thông Báo"
GoTo ExitSub: ''//Neu tren 2 La Loi Menu Ribbon Bat Buot Phai la 3
End If
.Offset(, -1).Interior.ColorIndex = 8 ''//To Mau cho de nhin va Kiem soat loi
.Offset(, -1).Value = MyID
.Offset(, 1).Value = Empty
.Offset(, 2).Interior.ColorIndex = 8 ''//To Mau cho de nhin va Kiem soat loi
.Offset(, 3).Value = Empty
.Offset(, 4).Value = Empty
.Offset(, 5).Value = Empty
.Offset(1).Value = 3: Target.Offset(1).Select ''//Goi Y Tao Tab Theo Code ...Neu khong Theo trinh tu La Error...
Else
Target.Value = Empty: Target.Offset(, 2).Select
MsgBox "Ban Bo Trong Ten - Label ...Error", 64, "Thông Báo"
End If
End With
ElseIf Target.Value = 3 Then ''//Ap dung cho Tao 1 Button rieng le
With Target
If Target.Value - Target.Offset(-1) > 1 Then
Target.Value = 2: Target.Select ''//Xu ly loi khi tao moi [MyTab 1] ma chua Tao Tab Con [2]
MsgBox "Error ... Create Tab Ribbon", 64, "Thông Báo"
GoTo ExitSub: ''//Tab 1 = Cha; 2 = con ...Co 1 moi Co 2 Neu nhay xuong 3 la Loi Menu Ribbon
End If
If .Offset(, 2) <> Empty Then ''//Xu ly loi khi bo trong Lable - Ten
If .Offset(, 3) <> Empty Then ''//Xu ly loi khi bo trong Ghi Chu - Ben duoi Ten
If .Offset(, 4) <> Empty Then ''//Xu ly loi khi bo trong SuperTip - Comment
.Offset(, -1).Interior.ColorIndex = xlNone ''//Xoa To Mau
.Offset(, -1).Value = MyID
.Offset(, 1).Value = "large" ''//Size large = To; normal = Nho
.Offset(, 2).Interior.ColorIndex = xlNone
.Offset(, 5).Value = GetRandName ''//Tao Key Tip ngau nhien
Else
Target.Value = Empty: Target.Offset(, 4).Select
MsgBox "Ban Bo Trong Screen Tip ...Error", 64, "Thông Báo"
End If
Else
Target.Value = Empty: Target.Offset(, 3).Select
MsgBox "Ban Bo Trong Screen Tip ...Error", 64, "Thông Báo"
End If
Else
Target.Value = Empty: Target.Offset(, 2).Select
MsgBox "Ban Bo Trong Ten - Label ...Error", 64, "Thông Báo"
End If
End With
Else
Target.Value = Empty: Target.Select ''//Xoa du lieu Sai
MsgBox "Chi Duoc Nhap 1, 2 Hoac 3", 64, "Thông Báo" ''//Thong bao du lieu Sai
End If
End If
ExitSub: ''//Xu ly Loi ...
Range("A2").Value = "WALL" ''//Ten Tab moi dau Tien ...
Application.EnableEvents = True
End Sub
''// Den Tang Dan luu trong Registry
Public Function MyCount() As Long
Dim lCounts As Long
Application.Volatile
lCounts = GetSetting("MyCount", "Settings", "Counts", 0) + 1
SaveSetting "MyCount", "Settings", "Counts", lCounts
MyCount = lCounts
If lCounts > 1000 Then DeleteSetting "MyCount", "Settings", "Counts"
End Function
''// Tao So Ngau Nhien
Public Function GetRandName() As String
''//Tao so Ngau Nhien ...This Code Copy Form - GPE
GetRandName = Mid(CreateObject("Scripting.FileSystemObject").GetTempName, 4, 2)
End Function