Cách gom các Sheet ở trong một With (1 người xem)

  • Thread starter Thread starter Hong.Van
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

Hong.Van

Busy
Tham gia
7/5/12
Bài viết
2,330
Được thích
1,767
Thầy cô & anh chị giúp em gom code này cho ngắn gọn
PHP:
Sub ABC()
        Dim Sh1 As Worksheet, Sh2 As Worksheet, i As Long 
    Set Sh1 = Sheets("A"): Set Sh2 = Sheets("B")
        With Sh1
        .Unprotect "abc" 
        End With
        With Sh2
        .Unprotect "abc" 
        End With
......
End Sub
Em dùng
PHP:
With Union (Sh1,Sh2)
.Unprotect "abc" 
 End With
nó không chịu
Em cảm ơn
------------
Có cách nào khi chạy bấy kỳ code nào thì dùng fương thức gì để Unprotect tòan bộ các sheet và chạy xong protect lại các sheet (PW: các sheet như nhau)
 
Lần chỉnh sửa cuối:
Để Unprotect toàn bộ các sheet thì bạn có thể sử dụng code sau:
PHP:
Sub Test()
    Dim Sh As Worksheet
    For Each Sh In ThisWorkbook.Sheets
        Sh.Unprotect "GPE"
    Next
End Sub
 
Upvote 0
Mình cứ tưởng đang ở BOX "Thư giản", vui thiệt đó nha!

Ai lại dùng fương thức UNION() cho các trang tính bao giờ!

UNION() chỉ xài với Range & Cells thôi, nha.

Bạn có thể thử đoạn mã sau:

Mã:
 Dim Sh As WorkSheet

 For Each Sh In ThíWorkbook.Worksheets
   If Left( Sh.Name, 3)="GPE" Then 


   End If Next Sh

)(in lỗi trước nếu tiêu đề đã làm bạn giận!
 
Upvote 0
Thầy cô & anh chị giúp em gom code này cho ngắn gọn
PHP:
Sub ABC()
        Dim Sh1 As Worksheet, Sh2 As Worksheet, i As Long 
    Set Sh1 = Sheets("A"): Set Sh2 = Sheets("B")
        With Sh1
        .Unprotect "abc" 
        End With
        With Sh2
        .Unprotect "abc" 
        End With
......
End Sub
Em dùng
PHP:
With Union (Sh1,Sh2)
.Unprotect "abc" 
 End With
nó không chịu
Em cảm ơn
------------
Có cách nào khi chạy bấy kỳ code nào thì dùng fương thức gì để Unprotect tòan bộ các sheet và chạy xong protect lại các sheet (PW: các sheet như nhau)
Đương nhiên không dùng như vậy được!
Vòng lập duyệt qua các sheet thì không nói làm gì, tôi nghĩ cách này sẽ tùy biến cao hơn và nhanh hơn:
Mã:
Sub Test()
  Dim wksArr, wksItem
  wksArr = Array("A", "B")
  For Each wksItem In wksArr
    Sheets([COLOR=#ff0000]CStr[/COLOR](wksItem)).Unprotect "abc"
  Next
End Sub
Chỉ duyệt qua cái nào mình cần
------------------
Đố bạn biết tại sao phải cần có CStr?
 
Upvote 0
Đương nhiên không dùng như vậy được!
Vòng lập duyệt qua các sheet thì không nói làm gì, tôi nghĩ cách này sẽ tùy biến cao hơn và nhanh hơn:
Mã:
Sub Test()
  Dim wksArr, wksItem
  wksArr = Array("A", "B")
  For Each wksItem In wksArr
    Sheets([COLOR=#ff0000]CStr[/COLOR](wksItem)).Unprotect "abc"
  Next
End Sub
Chỉ duyệt qua cái nào mình cần
------------------
Đố bạn biết tại sao phải cần có CStr?

Em không biết tại sao anh thêm Cstr nhưng theo suy đoán anh đề phòng nếu tên sheet được là 1 số thì lúc đó bị lẫn lộn giữa sheetcode và sheet name. Đoán thôi nhưng chưa test thử.
 
Upvote 0
Em không biết tại sao anh thêm Cstr nhưng theo suy đoán anh đề phòng nếu tên sheet được là 1 số thì lúc đó bị lẫn lộn giữa sheetcode và sheet name. Đoán thôi nhưng chưa test thử.

Đúng rồi đó anh quanghai. Nếu tên sheet là "1" thì nó vẫn là chuỗi chứ không phải số. Do đó có sự khác biệt giữa Sheets(1) và Sheets("1") nên để xác định tên cần dùng CStr
 
Upvote 0
Em không biết tại sao anh thêm Cstr nhưng theo suy đoán anh đề phòng nếu tên sheet được là 1 số thì lúc đó bị lẫn lộn giữa sheetcode và sheet name. Đoán thôi nhưng chưa test thử.
Là lộn giữa Sheet NameSheet Index chứ
Thí nghiệm thì biết
Ẹc... Ẹc...
 
Upvote 0
Đúng rồi đó anh quanghai. Nếu tên sheet là "1" thì nó vẫn là chuỗi chứ không phải số. Do đó có sự khác biệt giữa Sheets(1) và Sheets("1") nên để xác định tên cần dùng CStr
Không biết anh ndu có ý gì khác không chứ nếu là vấn đề này thì khi khai báo các phần tử của mảng ta chỉ cần khai báo dạng String là được rồi, đâu cần phải dùng hàm CStr.
 
Upvote 0
Không biết anh ndu có ý gì khác không chứ nếu là vấn đề này thì khi khai báo các phần tử của mảng ta chỉ cần khai báo dạng String là được rồi, đâu cần phải dùng hàm CStr.
Phòng luôn luôn chắc!
Ở trên chỉ là ví dụ nhỏ. thực tế thì wksArr chắc gì là Array(...) do ta khai báo ---> Nhiều khi là 1 mảng thu thập được từ dữ liệu cũng không chừng ---> Ai mà biết nó là String hay là cái giống gì
 
Upvote 0
Web KT

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

Back
Top Bottom