Làm sao active một sheet cụ thể khi open workbook

Liên hệ QC

Tường_Vi

Thành viên tiêu biểu
Tham gia
19/4/10
Bài viết
482
Được thích
121
Nghề nghiệp
Luôn tìm kiếm một vị trí tốt hơn
Ví dụ muội có rất nhiều sheet với tên W1, W2, W3....W(i)
Ví dụ: hiện tại là tuần 29, muội muốn sheet w29 sẽ active khi mở workbook
Muội làm một code sau
PHP:
Private sub workbook_open()
Sheets("W"&application.worksheetfunction.weeknum(day)).active
End sub

Không hiểu sao khi chạy code trên bị báo lỗi, mong được các Huynh chỉ giúp
 
Ví dụ muội có rất nhiều sheet với tên W1, W2, W3....W(i)
Ví dụ: hiện tại là tuần 29, muội muốn sheet w29 sẽ active khi mở workbook
Muội làm một code sau
PHP:
Private sub workbook_open()
Sheets("W"&application.worksheetfunction.weeknum(day)).active
End sub
Không hiểu sao khi chạy code trên bị báo lỗi, mong được các Huynh chỉ giúp

Thử dùng code sau:

Mã:
Sheets("W" & Evaluate("WEEKNUM(now())")).Select

Nhớ chọn

2.jpg
 
Upvote 0
Ví dụ muội có rất nhiều sheet với tên W1, W2, W3....W(i)
Ví dụ: hiện tại là tuần 29, muội muốn sheet w29 sẽ active khi mở workbook
Muội làm một code sau
PHP:
Private sub workbook_open()
Sheets("W"&application.worksheetfunction.weeknum(day)).active
End sub
Không hiểu sao khi chạy code trên bị báo lỗi, mong được các Huynh chỉ giúp
Vì trong WorksheetFunction không có hàm WeekNum
Vậy ta có thể làm bằng 2 cách:
- Dùng cách mà Doom vừa nêu ở trên! Có điều phải cài Add-In Analysis ToolPak ---> Có khi không cài được vì máy bắt cho đĩa CD (mà trong tay ta lại không có đĩa)
- Dùng hàm tự tạo: Tự mình tạo ra 1 hàm WeekNum để xài:
PHP:
Function WeekNumUDF(DateValue As Date, Optional TypeValue As Byte = 1) As Long
  Dim FirstDay As Date
  If TypeValue > 0 And TypeValue < 3 Then
    FirstDay = DateSerial(Year(DateValue), 1, 1)
    WeekNumUDF = Int((DateValue - FirstDay - Weekday(DateValue - (2 - TypeValue) * 6, 2) + 8) / 7) - (Weekday(FirstDay) <> TypeValue)
  End If
End Function
Tiếp theo xài sao đó là việc của bạn nhé, chẳng hạn:
Sheets("W" & WeekNumUDF(Date, 1)).Activate
(Chú ý là Activate chứ không phải Active à nha)
 
Lần chỉnh sửa cuối:
Upvote 0
Ví dụ muội có rất nhiều sheet với tên W1, W2, W3....W(i)
Ví dụ: hiện tại là tuần 29, muội muốn sheet w29 sẽ active khi mở workbook
Muội làm một code sau
PHP:
Private sub workbook_open()
Sheets("W"&application.worksheetfunction.weeknum(day)).active
End sub

Không hiểu sao khi chạy code trên bị báo lỗi, mong được các Huynh chỉ giúp
Bạn có thể dùng hàm WEEKNUM() trong name và lấy kết quả của name đó.
Ví dụ như tạo một name Week như thế này:
Mã:
Week = WEEKNUM(TODAY())
Và dùng code này:
PHP:
Private Sub Workbook_Open()
    Sheets("W" & [Week]).Active
End Sub
 
Upvote 0
Một chiêu mới

Vừa nghĩ ra 1 cách khác hay hơn rất nhiều: Không dùng UDF cũng chẳng cần đến Analysis ToolPak luôn:
PHP:
Sheets("W" & DatePart("ww", Date, 1)).Activate
Dùng DatePart xem bộ rất ngon lành
Thí nghiệm xem!
Ẹc... Ẹc...
 
Upvote 0
Web KT

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

Back
Top Bottom