Mình có 1 file excel (đính kèm) đã được tạo TAB Menu là [Quan Ly Du An]. Trong đó mình muốn click vào nút tương ứng với Sheet nào thì Sheet đó sẽ được mở, còn lại thì ẩn tất cả các Sheet còn lại.
Mong các bạn giúp giùm. Chân thành cảm ơn !!!
<button id="TTPL_BT_2" label="Hop Dong Ky Ket" imageMso="ReviewTrackChanges" size="large" screentip="Quan ly toan bo hop dong lien quan den du an, vi du: Tu van thiet ke, Tham tra, Lap thau, Xay dung, Thiet bi...." onAction="HopDong" />
...
<button id="HD_BT_1" label="Huong Dan/Tro Giup" image="help" size="large" screentip="Toan bo ho so, giay to lien quan den vong doi cua du an deu duoc tap trung xu ly tai day." onAction="HuongDan" />
Hiện tại thì nút "Hop Dong Ky Ket" mở sheet "BieuDo", và nút "Huong Dan/Tro Giup" mở sheet "HoSo", tức không đúng. Còn mọi nút còn lại đều mở đúng sheet rồi. Vậy bạn còn muốn gì? Nếu muốn sửa 2 nút nói trên thì làm tương tự như các nút còn lại. Tức nút "Hop Dong Ky Ket" gán cho onAction = "HopDong" để mở sheet "HopDong" và nút "Huong Dan/Tro Giup" gán cho onAction = "HuongDan" để mở sheet "HuongDan"
Tức trong XML sửa 2 chỗ thành
Mã:<button id="TTPL_BT_2" label="Hop Dong Ky Ket" imageMso="ReviewTrackChanges" size="large" screentip="Quan ly toan bo hop dong lien quan den du an, vi du: Tu van thiet ke, Tham tra, Lap thau, Xay dung, Thiet bi...." onAction="HopDong" /> ... <button id="HD_BT_1" label="Huong Dan/Tro Giup" image="help" size="large" screentip="Toan bo ho so, giay to lien quan den vong doi cua du an deu duoc tap trung xu ly tai day." onAction="HuongDan" />
Thế thôi.
Đã hiểu ra vấn đề là tại do xử lý XML toàn là chữ không nên bị "ngu chữ", nhìn chẳng ra. Thế nhưng M@trixs chỉ sửa được có Sheet [HuongDan] còn Sheet [HopDong] sao sửa mãi vẫn không được.
Thêm cái này nữa. Bạn có thể giúp mình viết lại code cho nó gọn lại được không. Kiểu như mình hiểu vầy nè:
- Khi click vào 1 nút nào đó nó sẽ tương ứng với 1 Sheet, lấy cái tên Sheet đó để giữ cho nó hiện, còn lại thì cho ẩn toàn bộ lun, không cần gọi tên từng sheet rồi đặt thuộc tính ẩn. Vì là nếu sau này mình thêm vào khoảng 20 Sheet nữa mà cứ gọi tên rồi đặt Hide-UnHide kiểu này thì có mà loạn cả lên với lại file cũng nặng nữa.
Mong các bạn giúp mình thêm tí nữa vậy. Cám ơn thật nhiều nhé !!
<?xml version="1.0" encoding="utf-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="RibbonLoad">
<ribbon>
<tabs>
<tab id="NewTab" label="Quan Ly Du An">
<group id="Nhom1" label="Gioi Thieu Chuong Trinh">
<labelControl id="GTCT_LB_1" getLabel="Tenchuongtrinh" />
<labelControl id="GTCT_LB_2" getLabel="Tacgia" />
<labelControl id="GTCT_LB_3" getLabel="Lienhe" />
</group>
<group id="Nhom2" label="Quan Ly Chung">
<button id="ThongTinDuAn" label="Thong Tin Du An" imageMso="BlogHomePage" size="large" screentip="Quan ly tong quan cac thong tin cua du an" supertip="Bao gom TMDT, dia diem, cac don vi lien quan..." onAction="ButtonClick" />
<button id="BieuDo" label="Bieu Do" imageMso="ChartInsert" size="large" screentip="Quan ly truc quan cac thong tin du an thong qua bieu do" onAction="ButtonClick" />
<button id="TienDo" label="Tien Do" imageMso="ChartTypeOtherInsertGallery" size="large" screentip="Quan ly tien do du an" onAction="ButtonClick" />
</group>
<group id="Nhom3" label="Thu Tuc Plap Ly">
<button id="HoSo" label="Ho So Phap Ly" imageMso="TranslationToolTip" size="large" screentip="Toan bo ho so, giay to lien quan den vong doi cua du an deu duoc tap trung xu ly tai day." onAction="ButtonClick" />
<button id="HopDong" label="Hop Dong Ky Ket" imageMso="ReviewTrackChanges" size="large" screentip="Quan ly toan bo hop dong lien quan den du an, vi du: Tu van thiet ke, Tham tra, Lap thau, Xay dung, Thiet bi...." onAction="ButtonClick" />
</group>
<group id="Nhom4" label="Thanh/Quyet toan">
<button id="GiaiNgan" label="Giai Ngan" image="tien" size="large" screentip="Toan bo ho so, giay to lien quan den vong doi cua du an deu duoc tap trung xu ly tai day." onAction="ButtonClick" />
</group>
<group id="Nhom5" label="Tien Ich">
<button id="TraCuuVanBan" label="Tra Cuu Van Ban" imageMso="FunctionsLookupReferenceInsertGallery" size="large" screentip="Tong hop cac Quyet Dinh, Nghi Dinh, Thong Tu..." onAction="ButtonClick" />
<button id="PhanLoaiDuAn" label="Phan Loai Du An" imageMso="FunctionsTextInsertGallery" size="large" screentip="Cac du an nhom A, nhom B, nhom C." onAction="ButtonClick" />
<button id="HinhThucDauThau" label="Hinh Thuc Dau Thau" imageMso="FunctionsRecentlyUsedtInsertGallery" size="large" screentip="Tim hieu cac hinh thuc dau thau: Chi dinh thau, dau thau rong rai, chao hang canh tranh..." onAction="ButtonClick" />
<button id="HinhThucHopDong" label="Hinh Thuc Hop Dong" imageMso="FunctionsFinancialInsertGallery" size="large" screentip="Tim hieu ve cac hinh thuc hop dong." onAction="ButtonClick" />
<button id="QuyDinhThoiGian" label="Quy Dinh Thoi Gian" imageMso="FunctionsDateTimeInsertGallery" size="large" screentip="Cac khoang thoi gian trong vong doi du an" onAction="ButtonClick" />
</group>
<group id="Nhom6" label="Huong Dan">
<button id="HuongDan" label="Huong Dan/Tro Giup" image="help" size="large" screentip="Toan bo ho so, giay to lien quan den vong doi cua du an deu duoc tap trung xu ly tai day." onAction="ButtonClick" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Private rb As IRibbonUI
Private currSheetName As String
Sub CheckBox4_Click()
If Columns("F:J").EntireColumn.Hidden = True Then Columns("F:J").EntireColumn.Hidden = False Else Columns("F:J").EntireColumn.Hidden = True
End Sub
Sub LocHopDong()
Dim i As Long
Dim sArr(), dArr()
sArr = Sheets("Ho So").Range("B5:B" & Sheets("Ho So").[B65536].End(xlUp).Row).Resize(, 9).Value
ReDim dArr(1 To UBound(sArr), 1 To 18)
For i = 1 To UBound(sArr)
If sArr(i, 1) = ActiveSheet.Name Then
k = k + 1
dArr(k, 1) = k
dArr(k, 2) = sArr(i, 5)
dArr(k, 3) = sArr(i, 2)
dArr(k, 5) = sArr(i, 3)
dArr(k, 8) = sArr(i, 6)
dArr(k, 9) = sArr(i, 4)
End If
Next
[A5:R1000].ClearContents
If k Then [A5].Resize(k, 18) = dArr
End Sub
'## Gioi Thieu ##
'################
' Ten chuong trinh
Sub Tenchuongtrinh(control As IRibbonControl, ByRef returnedVal)
returnedVal = "Ten chuong trinh: Quan Ly Du An"
End Sub
' Ten Tac gia
Sub Tacgia(control As IRibbonControl, ByRef returnedVal)
returnedVal = "Tac gia: Nguyen Manh Tuan"
End Sub
' Lien he
Sub Lienhe(control As IRibbonControl, ByRef returnedVal)
returnedVal = "Lien he: ksnguyenmanhtuan@gmail.com"
End Sub
'## Ket Thuc Gioi Thieu ##
'#########################
'Callback for customUI.onLoad
Sub RibbonLoad(ribbon As IRibbonUI)
Dim sh As Worksheet
Set rb = ribbon
For Each sh In Sheets
If sh.Visible = -1 Then
currSheetName = sh.Name
Exit For
End If
Next sh
End Sub
Sub ButtonClick(control As IRibbonControl)
If currSheetName <> control.ID Then
Sheets(control.ID).Visible = -1
Sheets(currSheetName).Visible = 0
currSheetName = control.ID
End If
End Sub
Làm tất tần tật từ A đến Z thế này thì cái chổ màu đỏ kia chắc phải ghi là thành SIWTOM quáXML
----------------Mã:................... ' Ten chuong trinh Sub Tenchuongtrinh(control As IRibbonControl, ByRef returnedVal) returnedVal = "Ten chuong trinh: Quan Ly Du An" End Sub ' Ten Tac gia Sub Tacgia(control As IRibbonControl, ByRef returnedVal) returnedVal = "[COLOR=#ff0000][B]Tac gia: Nguyen Manh Tuan[/B][/COLOR]" End Sub ....................
Về sau bạn có thể thêm 1000 sheet và 1000 button để mở theo nguyên tắc: button để mở sheet "xyz" thì ta gán cho id = "xyz". code không cần thêm gì cả vì thực ra bạn chỉ cần thao tác với 2 sheet: mở sheet có control.id và đóng sheet currSheetName. Các sheet còn lại thì vốn dĩ vẫn đang đóng mà.
Mình chỉ nói thế thôi chứ biết dù anh siwtom đã giúp bạn gần như toàn bộ nhưng anh ấy sẽ chẳng cần bạn "GHI TÊN" gì đó đâuThật là cảm ơn bạn @SiwTom quá, biển học vô bờ thật.
Tiếp thu ý kiến của bạn @ndu96081631 và có ý từ trước nên mình sẽ để tên những bạn đã giúp mình vào trong chú thích của code. Sau này mình làm trong phần Hướng Dẫn sẽ để tên các bạn đã giúp mình vào luôn, có cả tên bạn nữa và @SiwTom cùng một vài anh em trên giaiphapexcel.
Thật ra mình cũng chỉ có ý tưởng thôi, không có các bạn thì mình chẳng làm gì được. Chân thành cảm ơn !!!
Có cách nào để mình thiết lập khi mở file lên thì sẽ tự động chọn Tab [Quan Ly Du An] luôn không nhỉ. Kiểu như set làm mặc định luôn hiện Tab [Quan Ly Du An] trước tiên không ạ ??? Vì bây giờ khi mở lên thì Excel toàn chọn Tab [Home] làm mặc định !!!
Mong mọi người lại giúp M@trixs tiếp với !!!
<tab id="NewTab" label="Quan Ly Du An">
<tab id="NewTab" label="[B][COLOR=#ff0000]&[/COLOR][/B]Quan Ly Du An">
Sub RibbonLoad(ribbon As IRibbonUI)
Dim sh As Worksheet
Set rb = ribbon
For Each sh In Sheets
If sh.Visible = -1 Then
currSheetName = sh.Name
Exit For
End If
Next sh
[B][COLOR=#ff0000]SendKeys "%q~"[/COLOR][/B]
End Sub
Bác cho mình hỏi file XML để chỗ nào, sao mình tìm hoài không thấy ?Hiện tại thì nút "Hop Dong Ky Ket" mở sheet "BieuDo", và nút "Huong Dan/Tro Giup" mở sheet "HoSo", tức không đúng. Còn mọi nút còn lại đều mở đúng sheet rồi. Vậy bạn còn muốn gì? Nếu muốn sửa 2 nút nói trên thì làm tương tự như các nút còn lại. Tức nút "Hop Dong Ky Ket" gán cho onAction = "HopDong" để mở sheet "HopDong" và nút "Huong Dan/Tro Giup" gán cho onAction = "HuongDan" để mở sheet "HuongDan"
Tức trong XML sửa 2 chỗ thành
Mã:<button id="TTPL_BT_2" label="Hop Dong Ky Ket" imageMso="ReviewTrackChanges" size="large" screentip="Quan ly toan bo hop dong lien quan den du an, vi du: Tu van thiet ke, Tham tra, Lap thau, Xay dung, Thiet bi...." onAction="HopDong" /> ... <button id="HD_BT_1" label="Huong Dan/Tro Giup" image="help" size="large" screentip="Toan bo ho so, giay to lien quan den vong doi cua du an deu duoc tap trung xu ly tai day." onAction="HuongDan" />
Thế thôi.