Hoàng Nhật Phương
Thành viên gắn bó



- Tham gia
- 5/11/15
- Bài viết
- 1,895
- Được thích
- 1,219
Bạn sử dụng code này nhé:Xin chào các bạn,
Tôi đang muốn sắp xếp thứ tự các sheet theo điều kiện như trong sheet Home
Phiền các bạn giúp tôi với ạ.
Xin cảm ơn rất nhiều.
Bạn sử dụng code này nhé:
[GPECODE=vb]Sub SapXep()
Dim Cll As Range
For Each Cll In Sheets("Home").[D312].SpecialCells(4)
Sheets(Cll.Offset(, -2).Text).Move After:=Sheets(Sheets.Count)
Next
End Sub[/GPECODE]
Nguyên nhân lỗi là do tên sheet không có dấu cách, còn trên sheet (vùng B3:B12) thì lại có dấu cách. Bạn chỉ cần xóa tất cả các dấu cách này đi là được (có thể dung Replace cho nhanh).Cảm ơn bạn nhiều vì đã giúp tôi,
Nhưng code chạy bị lỗi bạn ạ , với lại phiền các bạn viết thêm cho tôi nút back với ạ
Xin cảm ơn các bạn rất nhiều.
Nguyên nhân lỗi là do tên sheet không có dấu cách, còn trên sheet (vùng B3:B12) thì lại có dấu cách. Bạn chỉ cần xóa tất cả các dấu cách này đi là được (có thể dung Replace cho nhanh).
Code cho nút Back là:
[GPECODE=vb]Sub Back()
Dim Cll As Range
For Each Cll In Sheets("Home").[B4:B12]
Sheets(Cll.Text).Move After:=Sheets(Cll.Offset(-1).Text)
Next
Sheets("Home").Select
End Sub[/GPECODE]
Bạn xem trong file nhé.
Bạn sử dụng code này nhé:
[GPECODE=vb]Sub SapXep()
Dim Cll As Range
For Each Cll In Sheets("Home").[D312].SpecialCells(4)
Sheets(Cll.Offset(, -2).Text).Move After:=Sheets(Sheets.Count)
Next
End Sub[/GPECODE]
Phiền các bạn sửa lỗi trên giúp tôi theo file kèm với ạ.For Each Cll In Sheets("Home").[D312].SpecialCells(4)
[D3Tôi thay dữ liệu trong cột D bằng công thức điều kiện thì code bị lỗi ở dòng
Phiền các bạn sửa lỗi trên giúp tôi theo file kèm với ạ.
Xin cảm ơn các bạn rất nhiều
Với mục đích của bạn như vậy thì khỏi di chuyển sheet nữa. Bạn sử dụng code sau sẽ chọn các sheet ứng với giá trị >0 trên cột C, sheet Home:Thật tuyệt vời,
Cảm ơn bạn rất nhiều, mục đích của tôi muốn sắp xếp các sheet theo nhóm như vậy chỉ là để Group các sheet cho dễ dàng thôi bạn ạ.
Khi xong việc không Group nữa lại trả về mặc định
----------------
Nếu bạn có thể viết cho tôi xin 1 đoạn code về Gourp các sheet theo điều kiện ở bài 1 đưa ra thì tôi đỡ phải mất 1 thao tác sắp xếp như thế này thì hay hơn nhiều ạ.
Khi tôi đặt câu hỏi này rồi tôi thì mới nghĩ đến sao tôi không hỏi luôn Group theo điều kiện luôn để tránh đi đường dài nhỉ...
Nếu có thể được mong bạn giúp ạ.
Cảm ơn bạn rất nhiều như vậy với tôi cũng giải quyết giảm được 95% thời gian rồi ạ.
[D312].SpecialCells(4) là các ô trống trong vùng D3
12, do đó khi dùng công thức cho cột D thì rõ ràng là vùng này chẳng có ô trống nào cả, dẫn đến code báo lỗi. Để khắc phục tình trạng này thì bạn sửa lại code một xíu:
[GPECODE=vb]Sub Go()
Dim Cll As Range
For Each Cll In Sheets("Home").[D312]
If Cll <> "X" Then Sheets(Cll.Offset(, -2).Text).Move After:=Sheets(Sheets.Count)
Next
Sheets("Home").Select
End Sub[/GPECODE]
Hoặc theo điều kiện như trong file của bạn thì có thể dựa vào cột C cũng được, khỏi cần dùng cột D, code lúc đó sẽ là:
[GPECODE=vb]Sub Go()
Dim Cll As Range
For Each Cll In Sheets("Home").[C3:C12]
If Cll <= 0 Then Sheets(Cll.Offset(, -1).Text).Move After:=Sheets(Sheets.Count)
Next
Sheets("Home").Select
End Sub[/GPECODE]
Với mục đích của bạn như vậy thì khỏi di chuyển sheet nữa. Bạn sử dụng code sau sẽ chọn các sheet ứng với giá trị >0 trên cột C, sheet Home:
[GPECODE=vb]Sub GroupSheets()
Dim Cll As Range, k As Long, Arr()
ReDim Arr(1 To Sheets.Count)
For Each Cll In Sheets("Home").[C3:C12]
If Cll > 0 Then
k = k + 1: Arr(k) = Cll.Offset(, -1)
End If
Next
ReDim Preserve Arr(1 To k)
Sheets(Arr()).Select
End Sub[/GPECODE]