- Ngày 21/02/2017 : Nhìn vào tiêu đề thì các bạn cũng biết rồi, nội dung hôm nay mình chia sẽ với các bạn là cách chọn nhiều sheet cùng lúc, có thể nó sẽ được áp dụng trong một số trường hợp, ví dụ như khi mở file lên chúng ta cần ẩn 1 số sheet hoặc để kiểm tra bản quyền file excel thì chúng ta chỉ cần hiện 1 sheet lên để kiểm tra thôi ...
+ Cách Thứ 4: Bá đạo hơn nữa là sẽ không dùng vòng lập, ta sẽ di chuyển sheet Dulieu về đầu sau đó chọn các sheet còn lại
Sub SelectMultiSheets()
Dim Temp
Temp = Evaluate("Transpose(ROW(2:" & Sheets.Count & "))")
Sheets("Dulieu").Move Before:=Sheets(1)
Sheets(Temp).Select
MsgBox ActiveWindow.SelectedSheets.Count
End Sub
Hoặc ngắn gọn hơn, khỏi cần phải khai báo biến
Sub SelectMultiSheets()
Sheets("Dulieu").Move Before:=Sheets(1)
Sheets(Evaluate("Transpose(ROW(2:" & Sheets.Count & "))")).Select
MsgBox ActiveWindow.SelectedSheets.Count
End Sub
+ Cách 5: Final bá đạo nhất, không cần di chuyển sheet nào hết
Sub SelectMultiSheets()
Dim Temp As String, i As Long
On Error Resume Next
i = ActiveSheet.Index
Temp = " " & Join(Evaluate("Transpose(Row(1:" & Sheets.Count & "))"), " ") & " "
Temp = Replace(Trim(Replace(Temp, " " & i & " ", " ")), " ", ",")
Sheets(Evaluate("{" & Temp & "}")).Select
End Sub
- Chúng ta hãy đi vào những cách để chọn nhé:
+ Cách 1: Đơn giản nhất chúng ta chọn theo tên và cho nó vào Array
Sub SelectSheet()
Sheets(Array("Sheet2", "Sheet3", "Sheet1")).Select
End Sub
Sheets(Array("Sheet2", "Sheet3", "Sheet1")).Select
End Sub
+ Cách 2: Gần giống với cách 1, là ta sẽ chọn theo vị trí
Sub Macro1()
Sheets(Array(1, 2, 4)).Select
End Sub
Sheets(Array(1, 2, 4)).Select
End Sub
+ Cách 3: Chuyên nghiệp hơn tí, ta sẽ dùng vòng lập để duyệt qua các sheet có trong workbook, nếu sheet nào khác sheet Dulieu thì ta sẽ không chọn
Sub SelectMultiSheets()
Dim Sh As Worksheet, Check As Boolean
Check = True
For Each Sh In ThisWorkbook.Worksheets
If Sh.Name <> "Dulieu" Then Sh.Select Check: Check = False
Next
MsgBox ActiveWindow.SelectedSheets.Count
End Sub
Dim Sh As Worksheet, Check As Boolean
Check = True
For Each Sh In ThisWorkbook.Worksheets
If Sh.Name <> "Dulieu" Then Sh.Select Check: Check = False
Next
MsgBox ActiveWindow.SelectedSheets.Count
End Sub
+ Cách Thứ 4: Bá đạo hơn nữa là sẽ không dùng vòng lập, ta sẽ di chuyển sheet Dulieu về đầu sau đó chọn các sheet còn lại
Sub SelectMultiSheets()
Dim Temp
Temp = Evaluate("Transpose(ROW(2:" & Sheets.Count & "))")
Sheets("Dulieu").Move Before:=Sheets(1)
Sheets(Temp).Select
MsgBox ActiveWindow.SelectedSheets.Count
End Sub
Hoặc ngắn gọn hơn, khỏi cần phải khai báo biến
Sub SelectMultiSheets()
Sheets("Dulieu").Move Before:=Sheets(1)
Sheets(Evaluate("Transpose(ROW(2:" & Sheets.Count & "))")).Select
MsgBox ActiveWindow.SelectedSheets.Count
End Sub
+ Cách 5: Final bá đạo nhất, không cần di chuyển sheet nào hết
Sub SelectMultiSheets()
Dim Temp As String, i As Long
On Error Resume Next
i = ActiveSheet.Index
Temp = " " & Join(Evaluate("Transpose(Row(1:" & Sheets.Count & "))"), " ") & " "
Temp = Replace(Trim(Replace(Temp, " " & i & " ", " ")), " ", ",")
Sheets(Evaluate("{" & Temp & "}")).Select
End Sub
Cảm ơn tác giả, đúng đoạn code em đang cần ạ!
Trả lờiXóaCảm ơn tác giả
Trả lờiXóacho em hỏi là cái này với những file có sheet ẩn thì lại bị lỗi, mình sửa kiểu gì để chỉ chọn những sheet hiện ạ
Trả lờiXóaĐăng nhận xét