Tạo Menu Userform

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

luuhonghai

Thành viên mới
Tham gia
1/2/17
Bài viết
32
Được thích
4
Em có 1 file bao gồm nhiều sheet. Em muốn tạo ra 1 Userform (đã vẽ trong file đính kèm) để có thể gọi ra các sheet theo yêu cầu:
1. Khi mở file chỉ hiện Userform (ẩn workbook)
2. Khi click vào các button:
"HƯỚNG DẪN" chỉ mở sheet "HUONG DAN" các sheet còn lại ẩn,
"DIỄN GIẢI" chỉ mở sheet "DIEN GIAI" các sheet còn lại ẩn,
"CUSTOMER 360" chỉ mở sheet "1.CUSTOMER 360" các sheet còn lại ẩn,
...
Tương tự với button "CHO VAY", "TIỀN GỬI", "PHÍ DỊCH VỤ",
Riêng button "TỔNG HỢP/IN PHÊ DUYỆT" khi click sẽ hiện các sheet: "1.CUSTOMER 360", "2.CHO VAY", "3.TIEN GUI", "4.PHI DV","5. ACP_KH KHAI THAC_TOI"
3. Tại các sheet khi ấn vào nút "Trang chủ" => quay lại Userform (ẩn wooksheet)
4. Khi tắt Userform => đóng hoàn toàn file excel
Do kiến thức về VBA còn nhiều hạn chế nên mong được các Thầy, các anh, chị hỗ trợ ạ. Em xin cảm ơn!
 

File đính kèm

  • V23.ACP+Pricing tool_2023.xlsb
    2.8 MB · Đọc: 34
Em có 1 file bao gồm nhiều sheet. Em muốn tạo ra 1 Userform (đã vẽ trong file đính kèm) để có thể gọi ra các sheet theo yêu cầu:
1. Khi mở file chỉ hiện Userform (ẩn workbook)
2. Khi click vào các button:
"HƯỚNG DẪN" chỉ mở sheet "HUONG DAN" các sheet còn lại ẩn,
"DIỄN GIẢI" chỉ mở sheet "DIEN GIAI" các sheet còn lại ẩn,
"CUSTOMER 360" chỉ mở sheet "1.CUSTOMER 360" các sheet còn lại ẩn,
...
Tương tự với button "CHO VAY", "TIỀN GỬI", "PHÍ DỊCH VỤ",
Riêng button "TỔNG HỢP/IN PHÊ DUYỆT" khi click sẽ hiện các sheet: "1.CUSTOMER 360", "2.CHO VAY", "3.TIEN GUI", "4.PHI DV","5. ACP_KH KHAI THAC_TOI"
3. Tại các sheet khi ấn vào nút "Trang chủ" => quay lại Userform (ẩn wooksheet)
4. Khi tắt Userform => đóng hoàn toàn file excel
Do kiến thức về VBA còn nhiều hạn chế nên mong được các Thầy, các anh, chị hỗ trợ ạ. Em xin cảm ơn!
Bài này hay quá, hóng bài giải :)
 
Upvote 0
Theo tôi, bất kỳ file nào mà ngay từ đầu đã ẩn excel là tôi ghét. Vì nó (cái file) tưởng nó ngon, độc quyền 1 mình 1 chợ, không cho xài cùng lúc với file excel khác. Đang làm với file này vợ kêu tính tiền góp hụi, tính không vừa ý bắt tính lại 5 lần bảy lượt là thua: Cứ đóng file mở file miết.
Chứ code cho việc ẩn hiện sheet thì dễ òm.
Thí dụ nút Btn1 có chữ (caption) là "Dien giai", caption trùng với tên sheet nhé
Mã:
For i = 1 to Sheets.Count
    If Sheets(i).Name = Btn1.Caption Then
       Sheets(i).Visible = True
    Else
       Sheets(i).Visible = False
End If
 
Upvote 0
Em có 1 file bao gồm nhiều sheet. Em muốn tạo ra 1 Userform (đã vẽ trong file đính kèm) để có thể gọi ra các sheet theo yêu cầu:
1. Khi mở file chỉ hiện Userform (ẩn workbook)
2. Khi click vào các button:
"HƯỚNG DẪN" chỉ mở sheet "HUONG DAN" các sheet còn lại ẩn,
"DIỄN GIẢI" chỉ mở sheet "DIEN GIAI" các sheet còn lại ẩn,
"CUSTOMER 360" chỉ mở sheet "1.CUSTOMER 360" các sheet còn lại ẩn,
...
Tương tự với button "CHO VAY", "TIỀN GỬI", "PHÍ DỊCH VỤ",
Riêng button "TỔNG HỢP/IN PHÊ DUYỆT" khi click sẽ hiện các sheet: "1.CUSTOMER 360", "2.CHO VAY", "3.TIEN GUI", "4.PHI DV","5. ACP_KH KHAI THAC_TOI"
3. Tại các sheet khi ấn vào nút "Trang chủ" => quay lại Userform (ẩn wooksheet)
4. Khi tắt Userform => đóng hoàn toàn file excel
Do kiến thức về VBA còn nhiều hạn chế nên mong được các Thầy, các anh, chị hỗ trợ ạ. Em xin cảm ơn!
Nhờ ChatGPT nhưng chỉnh sửa với tìm kiến thức thêm cũng trầy vẩy ra, bạn dùng tạm :D
 

File đính kèm

  • V23.ACP+Pricing tool_2023.xlsm
    2.7 MB · Đọc: 49
Upvote 0
Upvote 0
:) Không nói về code chứ về trải nghiệm người dùng đối với Form, ứng dụng này thì tôi lại thấy không thoải mái cho lắm.
Em có thể xin phương án tối ưu hơn được không ạ
Bài đã được tự động gộp:

Nhờ ChatGPT nhưng chỉnh sửa với tìm kiến thức thêm cũng trầy vẩy ra, bạn dùng tạm :D
Em cảm ơn ạ.
Bài đã được tự động gộp:

Theo tôi, bất kỳ file nào mà ngay từ đầu đã ẩn excel là tôi ghét. Vì nó (cái file) tưởng nó ngon, độc quyền 1 mình 1 chợ, không cho xài cùng lúc với file excel khác. Đang làm với file này vợ kêu tính tiền góp hụi, tính không vừa ý bắt tính lại 5 lần bảy lượt là thua: Cứ đóng file mở file miết.
Chứ code cho việc ẩn hiện sheet thì dễ òm.
Thí dụ nút Btn1 có chữ (caption) là "Dien giai", caption trùng với tên sheet nhé
Mã:
For i = 1 to Sheets.Count
    If Sheets(i).Name = Btn1.Caption Then
       Sheets(i).Visible = True
    Else
       Sheets(i).Visible = False
End If
Em cảm ơn thầy!
 
Upvote 0
:) Không nói về code chứ về trải nghiệm người dùng đối với Form, ứng dụng này thì tôi lại thấy không thoải mái cho lắm.
Đúng như tôi dự đoán:
- Không dùng chung được với bất kỳ file excel nào khác
- Cụ thể file ở bài #4 có thể mở file khác đồng thời, làm việc đồng thời. Nhưng khi đóng form chỉ ẩn application chứ không đóng file.
- Sau khi đóng form, excel biến mất khỏi màn hình, mở lên lại sẽ xảy ra 2 trường hợp:
a. Báo lỗi file đã mở mà không thấy gì, ngơ ngác toàn tập.
b. Không báo lỗi, vẫn không thấy gì và tưởng file lỗi hoặc excel lỗi.

Nghĩa là khi ẩn application, luôn luôn không kiểm soát được application còn hay hết, file khác ra sao, ... không lỗi này thì lỗi khác.
Chẳng thà làm 1 sheet menu và các nút nhấn nằm trên sheet đó. Tuyệt đối không ẩn application. Về menu chẳng qua là activate sheet menu.
Anh có thể giúp em thêm vào code để khi ấn nút "Trang chủ" -> chỉ hiện Form - ẩn wookshet giống như lúc đầu mở file được không ạ
Lại ẩn!
 
Upvote 0
Đúng như tôi dự đoán:
- Không dùng chung được với bất kỳ file excel nào khác
- Cụ thể file ở bài #4 có thể mở file khác đồng thời, làm việc đồng thời. Nhưng khi đóng form chỉ ẩn application chứ không đóng file.
- Sau khi đóng form, excel biến mất khỏi màn hình, mở lên lại sẽ xảy ra 2 trường hợp:
a. Báo lỗi file đã mở mà không thấy gì, ngơ ngác toàn tập.
b. Không báo lỗi, vẫn không thấy gì và tưởng file lỗi hoặc excel lỗi.

Nghĩa là khi ẩn application, luôn luôn không kiểm soát được application còn hay hết, file khác ra sao, ... không lỗi này thì lỗi khác.
Chẳng thà làm 1 sheet menu và các nút nhấn nằm trên sheet đó. Tuyệt đối không ẩn application. Về menu chẳng qua là activate sheet menu.

Lại ẩn!
Hihi, cháu mù code mà chú, thấy bài này cũng hay hay với dựa hơi GPT tí, chứ bình thường là cháu chỉ ấn theo dõi rồi đợi ạ. Đúng là bài này vẫn mong các anh chị cô chú chuyên code ra tay giúp
Anh có thể giúp em thêm vào code để khi ấn nút "Trang chủ" -> chỉ hiện Form - ẩn wookshet giống như lúc đầu mở file được không ạ
Thì nó lại lẩn quẩn và đóng tùm lum như ý chú Ptm nhắc bên trên í bác, chắc phải chờ người khác viết lại cho hoàn chỉnh bác à
 
Upvote 0
Em có 1 file bao gồm nhiều sheet. Em muốn tạo ra 1 Userform (đã vẽ trong file đính kèm) để có thể gọi ra các sheet theo yêu cầu:
1. Khi mở file chỉ hiện Userform (ẩn workbook)
2. Khi click vào các button:
"HƯỚNG DẪN" chỉ mở sheet "HUONG DAN" các sheet còn lại ẩn,
"DIỄN GIẢI" chỉ mở sheet "DIEN GIAI" các sheet còn lại ẩn,
"CUSTOMER 360" chỉ mở sheet "1.CUSTOMER 360" các sheet còn lại ẩn,
...
Tương tự với button "CHO VAY", "TIỀN GỬI", "PHÍ DỊCH VỤ",
Riêng button "TỔNG HỢP/IN PHÊ DUYỆT" khi click sẽ hiện các sheet: "1.CUSTOMER 360", "2.CHO VAY", "3.TIEN GUI", "4.PHI DV","5. ACP_KH KHAI THAC_TOI"
3. Tại các sheet khi ấn vào nút "Trang chủ" => quay lại Userform (ẩn wooksheet)
4. Khi tắt Userform => đóng hoàn toàn file excel
Do kiến thức về VBA còn nhiều hạn chế nên mong được các Thầy, các anh, chị hỗ trợ ạ. Em xin cảm ơn!
Tạo module ten a_home gồm các sub sau:
Mã:
'tao bien ghi nho ten sheet khi click vao menu userform
Public Sheet_Select As String

'Hien thi sheet thoa dieu kien
Sub SheetMenu()
    Dim Ten As Object
    Dim tTen As String
   
    If Sheet_Select = "" Then Exit Sub
   
    Application.Visible = True
    Sheets(Sheet_Select).Visible = True
   
    For Each Ten In ThisWorkbook.Sheets
        tTen = Ten.Name
        Select Case Sheet_Select
            Case Is <> "5. ACP_KH KHAI THAC_TOI"
                If tTen <> Sheet_Select Then
                    Sheets(tTen).Visible = False
                End If
            Case "5. ACP_KH KHAI THAC_TOI"
                If tTen = "1. CUSTOMER 360" Or tTen = "2. CHO VAY" Or tTen = "3. TIEN GUI" Or tTen = "4. PHI DV" Or tTen = "5. ACP_KH KHAI THAC_TOI" Then
                    Sheets(tTen).Visible = True
                Else
                    Sheets(tTen).Visible = False
                End If
        End Select
    Next
    Unload UserForm1
End Sub

'Hien thi UserForm
Sub Start_Form_UserForm1()
    Application.Visible = False
    UserForm1.Show
End Sub

1. Khi mở file chỉ hiện Userform (ẩn workbook): tại ThisWorkbook chèn vào sự kiện Private Sub Workbook_Open() ....Call Start_Form_UserForm1
2. Khi click vào các button: code trên Userform: tương tự cho Icon1 đến Icon7 với biến Sheet_Select tương ứng tên các sheet cần hiển thị "1. CUSTOMER 360", "2. CHO VAY", "3. TIEN GUI", "4. PHI DV", "5. ACP_KH KHAI THAC_TOI"
Mã:
Private Sub Icon1_Click()
    Sheet_Select = "HUONG DAN"
    Call SheetMenu
End Sub
3. Tại các sheet khi ấn vào nút "Trang chủ" => quay lại Userform (ẩn wooksheet): các shape nút trang chủ bạn Assign Macro...: Start_Form_UserForm1
4. Khi tắt Userform => đóng hoàn toàn file excel
Mã:
'QueryClose event > Return values:
' - vbFormControlMenu      0   The user has chosen the Close command from the Control menu on the UserForm.
' - vbFormCode             1   The Unload statement is invoked from code.
' - vbAppWindows           2   The current Windows operating environment session is ending.
' - vbAppTaskManager       3   The Windows Task Manager is closing the application.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode <> 1 Then 'ngoai tru truong hop Unload me
        Application.Quit
        ThisWorkbook.Close SaveChanges = False
    End If
End Sub

Bạn xem file đính kèm nhé.
 

File đính kèm

  • Test_V23.ACP+Pricing tool_2023.xlsb
    2.8 MB · Đọc: 36
Upvote 0
Đúng như tôi dự đoán:
- Không dùng chung được với bất kỳ file excel nào khác
- Cụ thể file ở bài #4 có thể mở file khác đồng thời, làm việc đồng thời. Nhưng khi đóng form chỉ ẩn application chứ không đóng file.
- Sau khi đóng form, excel biến mất khỏi màn hình, mở lên lại sẽ xảy ra 2 trường hợp:
a. Báo lỗi file đã mở mà không thấy gì, ngơ ngác toàn tập.
b. Không báo lỗi, vẫn không thấy gì và tưởng file lỗi hoặc excel lỗi.

Nghĩa là khi ẩn application, luôn luôn không kiểm soát được application còn hay hết, file khác ra sao, ... không lỗi này thì lỗi khác.
Chẳng thà làm 1 sheet menu và các nút nhấn nằm trên sheet đó. Tuyệt đối không ẩn application. Về menu chẳng qua là activate sheet menu.

Lại ẩn!
Chú chỉ ra chính xác 100% những lỗi mà con gặp phải ạ. Con cảm ơn chú và chúc chú sức khoẻ!
Bài đã được tự động gộp:

Dùng sheet làm menu để bấm chuyển qua các sheet tác vụ khác cho nhanh. Tham khảo trên mạng. :)

View attachment 286299
Em cảm ơn anh đã đưa ra giúp e phương án tối ưu hơn!
Bài đã được tự động gộp:

Tạo module ten a_home gồm các sub sau:
Mã:
'tao bien ghi nho ten sheet khi click vao menu userform
Public Sheet_Select As String

'Hien thi sheet thoa dieu kien
Sub SheetMenu()
    Dim Ten As Object
    Dim tTen As String
  
    If Sheet_Select = "" Then Exit Sub
  
    Application.Visible = True
    Sheets(Sheet_Select).Visible = True
  
    For Each Ten In ThisWorkbook.Sheets
        tTen = Ten.Name
        Select Case Sheet_Select
            Case Is <> "5. ACP_KH KHAI THAC_TOI"
                If tTen <> Sheet_Select Then
                    Sheets(tTen).Visible = False
                End If
            Case "5. ACP_KH KHAI THAC_TOI"
                If tTen = "1. CUSTOMER 360" Or tTen = "2. CHO VAY" Or tTen = "3. TIEN GUI" Or tTen = "4. PHI DV" Or tTen = "5. ACP_KH KHAI THAC_TOI" Then
                    Sheets(tTen).Visible = True
                Else
                    Sheets(tTen).Visible = False
                End If
        End Select
    Next
    Unload UserForm1
End Sub

'Hien thi UserForm
Sub Start_Form_UserForm1()
    Application.Visible = False
    UserForm1.Show
End Sub

1. Khi mở file chỉ hiện Userform (ẩn workbook): tại ThisWorkbook chèn vào sự kiện Private Sub Workbook_Open() ....Call Start_Form_UserForm1
2. Khi click vào các button: code trên Userform: tương tự cho Icon1 đến Icon7 với biến Sheet_Select tương ứng tên các sheet cần hiển thị "1. CUSTOMER 360", "2. CHO VAY", "3. TIEN GUI", "4. PHI DV", "5. ACP_KH KHAI THAC_TOI"
Mã:
Private Sub Icon1_Click()
    Sheet_Select = "HUONG DAN"
    Call SheetMenu
End Sub
3. Tại các sheet khi ấn vào nút "Trang chủ" => quay lại Userform (ẩn wooksheet): các shape nút trang chủ bạn Assign Macro...: Start_Form_UserForm1
4. Khi tắt Userform => đóng hoàn toàn file excel
Mã:
'QueryClose event > Return values:
' - vbFormControlMenu      0   The user has chosen the Close command from the Control menu on the UserForm.
' - vbFormCode             1   The Unload statement is invoked from code.
' - vbAppWindows           2   The current Windows operating environment session is ending.
' - vbAppTaskManager       3   The Windows Task Manager is closing the application.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode <> 1 Then 'ngoai tru truong hop Unload me
        Application.Quit
        ThisWorkbook.Close SaveChanges = False
    End If
End Sub

Bạn xem file đính kèm nhé.
Em cảm ơn anh ạ!
Bài đã được tự động gộp:

Tạo module ten a_home gồm các sub sau:
Mã:
'tao bien ghi nho ten sheet khi click vao menu userform
Public Sheet_Select As String

'Hien thi sheet thoa dieu kien
Sub SheetMenu()
    Dim Ten As Object
    Dim tTen As String
  
    If Sheet_Select = "" Then Exit Sub
  
    Application.Visible = True
    Sheets(Sheet_Select).Visible = True
  
    For Each Ten In ThisWorkbook.Sheets
        tTen = Ten.Name
        Select Case Sheet_Select
            Case Is <> "5. ACP_KH KHAI THAC_TOI"
                If tTen <> Sheet_Select Then
                    Sheets(tTen).Visible = False
                End If
            Case "5. ACP_KH KHAI THAC_TOI"
                If tTen = "1. CUSTOMER 360" Or tTen = "2. CHO VAY" Or tTen = "3. TIEN GUI" Or tTen = "4. PHI DV" Or tTen = "5. ACP_KH KHAI THAC_TOI" Then
                    Sheets(tTen).Visible = True
                Else
                    Sheets(tTen).Visible = False
                End If
        End Select
    Next
    Unload UserForm1
End Sub

'Hien thi UserForm
Sub Start_Form_UserForm1()
    Application.Visible = False
    UserForm1.Show
End Sub

1. Khi mở file chỉ hiện Userform (ẩn workbook): tại ThisWorkbook chèn vào sự kiện Private Sub Workbook_Open() ....Call Start_Form_UserForm1
2. Khi click vào các button: code trên Userform: tương tự cho Icon1 đến Icon7 với biến Sheet_Select tương ứng tên các sheet cần hiển thị "1. CUSTOMER 360", "2. CHO VAY", "3. TIEN GUI", "4. PHI DV", "5. ACP_KH KHAI THAC_TOI"
Mã:
Private Sub Icon1_Click()
    Sheet_Select = "HUONG DAN"
    Call SheetMenu
End Sub
3. Tại các sheet khi ấn vào nút "Trang chủ" => quay lại Userform (ẩn wooksheet): các shape nút trang chủ bạn Assign Macro...: Start_Form_UserForm1
4. Khi tắt Userform => đóng hoàn toàn file excel
Mã:
'QueryClose event > Return values:
' - vbFormControlMenu      0   The user has chosen the Close command from the Control menu on the UserForm.
' - vbFormCode             1   The Unload statement is invoked from code.
' - vbAppWindows           2   The current Windows operating environment session is ending.
' - vbAppTaskManager       3   The Windows Task Manager is closing the application.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode <> 1 Then 'ngoai tru truong hop Unload me
        Application.Quit
        ThisWorkbook.Close SaveChanges = False
    End If
End Sub

Bạn xem file đính kèm nhé.
Theo như em test thì code này đã xử lý được toàn bộ các yêu cầu mà e mong muốn ạ. Một lần nữa cảm ơn anh đã rất nhiệt tình hỗ trợ em.
 
Lần chỉnh sửa cuối:
Upvote 0
Em có 1 file bao gồm nhiều sheet. Em muốn tạo ra 1 Userform (đã vẽ trong file đính kèm) để có thể gọi ra các sheet theo yêu cầu:
1. Khi mở file chỉ hiện Userform (ẩn workbook)
2. Khi click vào các button:
"HƯỚNG DẪN" chỉ mở sheet "HUONG DAN" các sheet còn lại ẩn,
"DIỄN GIẢI" chỉ mở sheet "DIEN GIAI" các sheet còn lại ẩn,
"CUSTOMER 360" chỉ mở sheet "1.CUSTOMER 360" các sheet còn lại ẩn,
...
Tương tự với button "CHO VAY", "TIỀN GỬI", "PHÍ DỊCH VỤ",
Riêng button "TỔNG HỢP/IN PHÊ DUYỆT" khi click sẽ hiện các sheet: "1.CUSTOMER 360", "2.CHO VAY", "3.TIEN GUI", "4.PHI DV","5. ACP_KH KHAI THAC_TOI"
3. Tại các sheet khi ấn vào nút "Trang chủ" => quay lại Userform (ẩn wooksheet)
4. Khi tắt Userform => đóng hoàn toàn file excel
Do kiến thức về VBA còn nhiều hạn chế nên mong được các Thầy, các anh, chị hỗ trợ ạ. Em xin cảm ơn!

có mấy trang đặt pass nên ko asignmacro cho shape trang chủ được, cũng làm mấy trang kia theo ý bạn trước
 

File đính kèm

  • V23.ACP+Pricing tool_2023.xlsm
    2.7 MB · Đọc: 17
Upvote 0
Theo như em test thì code này đã xử lý được toàn bộ các yêu cầu mà e mong muốn ạ. Một lần nữa cảm ơn anh đã rất nhiệt tình hỗ trợ em.
Code đó đang viết
Rich (BB code):
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode <> 1 Then 'ngoai tru truong hop Unload me
        Application.Quit
        ThisWorkbook.Close SaveChanges = False
    End If
End Sub
Nếu đang làm song song 2 hay nhiều file, đóng form của file này, những file còn lại cũng bị đóng theo. Nếu may thì Excel hỏi có lưu file 1 không, có lưu file 2 không, phải cancel mấy cái. Xui thì nó cóc hỏi và đóng tất tần tật.
 
Upvote 0
Cái giải pháp có quá nhiều bất cập mà các bạn bỏ công sức viết code làm gì cho lãng phí vậy. Phân tích lại các tình huống, qui trình thao tác, chọn giải pháp phù hợp nhất rồi bắt tay code cho nó.
 
Upvote 0
có mấy trang đặt pass nên ko asignmacro cho shape trang chủ được, cũng làm mấy trang kia theo ý bạn trước
Cũng y những file trên, đóng form là hết làm việc với bất kỳ file đang mở nào.
Tôi nói rồi, ẩn application tiềm ẩn nhiều tình huống rủi ro mà không thể kiểm soát được hết. Tôi là chưa phải là chuyên gia test nhiều tình huống mà đã phát hiện cả đống thứ như trên.
TB:
Lỗi như vậy mà ai đã đánh dấu là solution!
1676035819244.png
 
Upvote 0
Cũng y những file trên, đóng form là hết làm việc với bất kỳ file đang mở nào.
Tôi nói rồi, ẩn application tiềm ẩn nhiều tình huống rủi ro mà không thể kiểm soát được hết. Tôi là chưa phải là chuyên gia test nhiều tình huống mà đã phát hiện cả đống thứ như trên.
TB:
Lỗi như vậy mà ai đã đánh dấu là solution!
View attachment 286316
nhiều khi mở file ra, tự nhiên đóng hết mấy file khác đang làm, giật mình chưa save. haha
 
Upvote 0
Code đó đang viết
Rich (BB code):
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode <> 1 Then 'ngoai tru truong hop Unload me
        Application.Quit
        ThisWorkbook.Close SaveChanges = False
    End If
End Sub
Nếu đang làm song song 2 hay nhiều file, đóng form của file này, những file còn lại cũng bị đóng theo. Nếu may thì Excel hỏi có lưu file 1 không, có lưu file 2 không, phải cancel mấy cái. Xui thì nó cóc hỏi và đóng tất tần tật.
Cám ơn góp ý của anh. Em chỉnh lại code thay Application.quit bằng Thisworkbook.Windows(1) sẽ ẩn (.visible) và đóng (.close) cho file này thôi không ảnh hưởng tới file khác.
Mã:
Public Sheet_Select As String

'Hien thi sheet thoa dieu kien
Sub SheetMenu()
    Dim Ten As Object
    Dim tTen As String
   
    If Sheet_Select = "" Then Exit Sub
   
    With ThisWorkbook
        .Activate
        .Windows(1).Visible = True
        .Sheets(Sheet_Select).Visible = True
        .Sheets(Sheet_Select).Select
       
        For Each Ten In ThisWorkbook.Sheets
            tTen = Ten.Name
            Select Case Sheet_Select
                Case Is <> "5. ACP_KH KHAI THAC_TOI"
                    If tTen <> Sheet_Select Then
                        .Sheets(tTen).Visible = False
                    End If
                Case "5. ACP_KH KHAI THAC_TOI"
                    If tTen = "1. CUSTOMER 360" Or tTen = "2. CHO VAY" Or tTen = "3. TIEN GUI" Or tTen = "4. PHI DV" Or tTen = "5. ACP_KH KHAI THAC_TOI" Then
                        .Sheets(tTen).Visible = True
                    Else
                        .Sheets(tTen).Visible = False
                    End If
            End Select
        Next
        Unload UserForm1
    End With
End Sub

'Hien thi UserForm
Sub Start_Form_UserForm1()
    ThisWorkbook.Windows(1).Visible = False
    UserForm1.Show
End Sub

'QueryClose event > Return values:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode <> 1 Then 'ngoai tru truong hop Unload me
        ThisWorkbook.Close SaveChanges = False
    End If
End Sub
Cái giải pháp có quá nhiều bất cập mà các bạn bỏ công sức viết code làm gì cho lãng phí vậy. Phân tích lại các tình huống, qui trình thao tác, chọn giải pháp phù hợp nhất rồi bắt tay code cho nó.
Đến lúc bạn ấy thấy file không còn phù hợp sẽ quay lại tìm hiểu các giải pháp khác thôi bạn. Mình cũng đang học hỏi thấy cái nào lạ lạ thì tìm hiểu rồi giúp thớt thôi xem như cách mình học thêm VBA.
 

File đính kèm

  • Test2_V23.ACP+Pricing tool_2023.xlsb
    2.8 MB · Đọc: 22
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn góp ý của anh. Em chỉnh lại code thay Application.quit bằng Thisworkbook.Windows(1) sẽ ẩn (.visible) và đóng (.close) cho file này thôi không ảnh hưởng tới file khác.
1. Thử mở 1 file làm việc khác trước, mở file này sau. Làm việc cùng lúc 2 file. Đóng file này bằng 2 cách: đóng file bằng nút close file, đóng file bằng nút close form.
Mở file này lần thứ 2 trong khi file kia còn đang mở. Quan sát task bar
Quay lại làm tiếp file kia. (chắc chắn phải hiện 1 sheet bất kỳ mới quay lại được, và xuất hiện thêm 1 excel đen, đóng thử cửa sổ excel đen)
2. Chỉ mở 1 file này, đóng lại bằng nút close form (xuất hiện cửa sổ excel đen). Mở lên lần 2

Ý kiến riêng của tôi là nếu không lường trước được hết những nguy cơ (mà lại là nguy cơ lớn, rủi ro nhiều) thì đừng làm. Thậm chí không cần học.
Bản chất việc ẩn application cũng chẳng phục vụ được gì cho hiệu quả công việc. Quan trọng là code kiết xử lý dữ liệu, nhập liệu, ra báo cáo chạy cho ngon lành, bỏ qua những cái trình bày hoa mỹ (hay hoa mắt chẳng biết).
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom