Tự động đổi mầu worksheet

  • Thread starter Thread starter salam
  • Ngày gửi Ngày gửi
Liên hệ QC

salam

Thành viên gắn bó
Tham gia
4/11/06
Bài viết
1,945
Được thích
1,896
Giới tính
Nam
Nghề nghiệp
Accountant
Em có một file có khoảng >10 sheet trong đó có sheet(Menu). Em muốn khi di chuyển vị trí của sheet(menu) đến đâu thì các sheet đằng sau nó đổi mầu, các sheet đằng trước nó trả về mặc định. Các Bác giúp em nhé.
Em xin chân thành cảm ơn.

 
Vụ này cũng dể mà! Bạn dùng thử đoạn code này nhé:
PHP:
.............
On Error Resume Next
For i = ActiveSheet.Index To Sheets.Count
Sheets(i).Next.Tab.ColorIndex = 3
Next i
.............
Cái này chỉ tô màu các sheet bên phải (trừ sheet menu)
Nếu muốn thêm bớt gì đó thì bạn tự hoàn thiện nhé
 
Upvote 0
Vụ này cũng dể mà! Bạn dùng thử đoạn code này nhé:
PHP:
.............
On Error Resume Next
For i = ActiveSheet.Index To Sheets.Count
Sheets(i).Next.Tab.ColorIndex = 3
Next i
.............
Cái này chỉ tô màu các sheet bên phải (trừ sheet menu)
Nếu muốn thêm bớt gì đó thì bạn tự hoàn thiện nhé
Đúng vậy, nhưng đây chỉ tô màu sheet bên phải. Cần bổ sung : trả về màu mặc định cho những sheet bên trái. Nếu có di chuyển sheet thế nào thì sau khi chạy code nó cũng cho kết quả mong muốn.

TDN
 
Upvote 0
Vụ này cũng dể mà! Bạn dùng thử đoạn code này nhé:
PHP:
.............
On Error Resume Next
For i = ActiveSheet.Index To Sheets.Count
Sheets(i).Next.Tab.ColorIndex = 3
Next i
.............
Cái này chỉ tô màu các sheet bên phải (trừ sheet menu)
Nếu muốn thêm bớt gì đó thì bạn tự hoàn thiện nhé
Cái này hình như mỗi lần đổi vị trí sheet thì lại chạy lại code nó không tự động đổi khi ta đổi vị trí sheet định sẵn hay sao ấy. Các Bác có code nào tự động đổi màu các sheet bên phải tính từ sheet đinh sẵn (sheet menu) khi ta thay đổi vị trí sheet menu cho em với.
 
Upvote 0
vậy tô màu như thế nào, hay chi cho ra một màu nhất định thôi hả hay cho ra nhiều loại màu khác nhau thì như thế nào nhỉ!
 
Upvote 0
Ai dà....
Ta để ý thế này nhé:
- Chỉ sồ Index của 1 sheet chỉ phụ thuộc vào vị trí của nó mà không phụ thuộc vào tên sheet và Sheet Code Name
- Ta có 10 sheet, giả sử sheet Menu đang ở vị trí thứ 5 tính từ trái qua phải. Vậy thì chỉ số Index của nó sẽ = 5
- Khi ta dời Sheet Menu sang bên phải thì chỉ số Index của nó sẽ = 6
Dựa vào mấy cái tôi nêu trên thì làm được rồi
Ví dụ:
PHP:
Option Explicit
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
   Dim Menu As Integer
   On Error Resume Next
   Menu = Sheets("Menu").Index
   For Each Sh In ThisWorkbook.Worksheets
      If Sh.Index < Menu Then Sh.Tab.ColorIndex = xlNone
      If Sh.Index >= Menu Then Sh.Tab.ColorIndex = 3
   Next Sh
End Sub
Nếu bạn bảo đảm trong Workbook có tồn tại sheet Menu thì có thể bỏ luôn đoạn:
On Error Resume Next
Hoặc nếu bạn muốn làm giống gợi ý của tôi ở bài #2 thì:
PHP:
For i = 1 to Sheets.Count
If i < Sheets("Menu").Index then.............
If i>= Sheets("Menu").Index then.............
Bạn tự chế tạo vậy! Chẳng khó khăn gì
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom