Dùng vòng lặp để select Sheet (1 người xem)

Liên hệ QC

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

zztantaibazz

Thành viên chính thức
Tham gia
19/8/13
Bài viết
96
Được thích
46
Nghề nghiệp
M&A Specialist - RM Assitant
Hi mọi người,

Trong VBA em có dùng 1 doạn code:
Mã:
Set sh1 = ActiveWorkbook.Sheets("Estimation_Y")
    Set sh2 = ActiveWorkbook.Sheets("Estimation_N")
    Set sh3 = ActiveWorkbook.Sheets("Estimation_NA")
    Set sh4 = ActiveWorkbook.Sheets("Dedicated_Y")
    Set sh5 = ActiveWorkbook.Sheets("Dedicated_N")
    Set sh6 = ActiveWorkbook.Sheets("Dedicated_NA")

Em muốn dùng vòng lặp For i = 1 to 6 để select từng sheet trên (Trong file có rất nhiều sheet).

Mọi người hướng dẫn em code này với.
Thanks.
 
bạn thử đoạn code sau, có phải giống vậy ko?
Mã:
Sub test()
Dim MyArray As Variant, i As Long

    MyArray = Array("Sheet1", "Sheet2", "Sheet3")
    
    For i = 0 To 2
        'MsgBox MyArray(i)
        Sheets(MyArray(i)).Select
    Next i
    
End Sub
 
Upvote 0
Hi mọi người,

Trong VBA em có dùng 1 doạn code:
Mã:
Set sh1 = ActiveWorkbook.Sheets("Estimation_Y")
    Set sh2 = ActiveWorkbook.Sheets("Estimation_N")
    Set sh3 = ActiveWorkbook.Sheets("Estimation_NA")
    Set sh4 = ActiveWorkbook.Sheets("Dedicated_Y")
    Set sh5 = ActiveWorkbook.Sheets("Dedicated_N")
    Set sh6 = ActiveWorkbook.Sheets("Dedicated_NA")

Em muốn dùng vòng lặp For i = 1 to 6 để select từng sheet trên (Trong file có rất nhiều sheet).

Mọi người hướng dẫn em code này với.
Thanks.

Đoán mò như sau :
Mã:
Sub Test()
Dim i%, ArrSheets() As Object
    ReDim ArrSheets(1 To Sheets.Count)
    For i = 1 To Sheets.Count
       Set ArrSheets(i) = Sheets(i)
    Next
End Sub
 
Upvote 0
Nhưng tác giả muốn truy xuất tuần tự theo tên đã gán cho các trang thì sao đây ta?

Lúc đó có lẽ nên thêm cách khác nữa . . .

/(hà, Khà, khà,. . . . .
 
Upvote 0
Hi mọi người,

Trong VBA em có dùng 1 doạn code:
Mã:
Set sh1 = ActiveWorkbook.Sheets("Estimation_Y")
    Set sh2 = ActiveWorkbook.Sheets("Estimation_N")
    Set sh3 = ActiveWorkbook.Sheets("Estimation_NA")
    Set sh4 = ActiveWorkbook.Sheets("Dedicated_Y")
    Set sh5 = ActiveWorkbook.Sheets("Dedicated_N")
    Set sh6 = ActiveWorkbook.Sheets("Dedicated_NA")

Em muốn dùng vòng lặp For i = 1 to 6 để select từng sheet trên (Trong file có rất nhiều sheet).

Mọi người hướng dẫn em code này với.
Thanks.

Đưa file lên, nói rõ yêu cầu thì sẽ có cách ngắn gọn. Không lẻ Set hết các sheet trong file à.
 
Upvote 0
Đưa file lên, nói rõ yêu cầu thì sẽ có cách ngắn gọn. Không lẻ Set hết các sheet trong file à.
Chắc là người ta muốn thực hiện lệnh gì đó trên mỗi Sheet anh ạ.
P/s zztantaibazz - Nếu tên sheet được đặt với ký hiệu riêng, ví dụ là dấu gạch "_" thì có thể tham khảo code sau:
[gpecode=vb]
Sub GpeTest()
Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Worksheets
If CStr(Sh.Name) Like "*_*" Then
Sh.Range("A4") = Sh.Name 'vi du
'Code cua ban
End If
Next Sh
End Sub[/gpecode]
 

File đính kèm

Upvote 0
Chắc là người ta muốn thực hiện lệnh gì đó trên mỗi Sheet anh ạ.
P/s zztantaibazz - Nếu tên sheet được đặt với ký hiệu riêng, ví dụ là dấu gạch "_" thì có thể tham khảo code sau:
[gpecode=vb]
Sub GpeTest()
Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Worksheets
If CStr(Sh.Name) Like "*_*" Then
Sh.Range("A4") = Sh.Name 'vi du
'Code cua ban
End If
Next Sh
End Sub[/gpecode]
Hình như Sheet.Name là String rồi mà, sao phải CStr cho tốn kém vậy.
 
Upvote 0
Hi mọi người,

Trong VBA em có dùng 1 doạn code:
Mã:
Set sh1 = ActiveWorkbook.Sheets("Estimation_Y")
    Set sh2 = ActiveWorkbook.Sheets("Estimation_N")
    Set sh3 = ActiveWorkbook.Sheets("Estimation_NA")
    Set sh4 = ActiveWorkbook.Sheets("Dedicated_Y")
    Set sh5 = ActiveWorkbook.Sheets("Dedicated_N")
    Set sh6 = ActiveWorkbook.Sheets("Dedicated_NA")

Em muốn dùng vòng lặp For i = 1 to 6 để select từng sheet trên (Trong file có rất nhiều sheet).

Mọi người hướng dẫn em code này với.
Thanks.

Bạn muốn sửa lại để làm gì? Ngắn hơn chưa chắc đã nhanh hơn đâu nhé.
 
Upvote 0
Bạn muốn sửa lại để làm gì? Ngắn hơn chưa chắc đã nhanh hơn đâu nhé.

Nhưng muốn đưa vô vòng lặp để xử lí cùng 1 lệnh là nhu cầu chính đán mà!
Mình đoán thôi; Nếu 6 trang đó có thiết kế giống nhau. . . . . so với những mtrang còn lại
 
Upvote 0
Chắc là người ta muốn thực hiện lệnh gì đó trên mỗi Sheet anh ạ.
P/s zztantaibazz - Nếu tên sheet được đặt với ký hiệu riêng, ví dụ là dấu gạch "_" thì có thể tham khảo code sau:
[gpecode=vb]
Sub GpeTest()
Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Worksheets
If CStr(Sh.Name) Like "*_*" Then
Sh.Range("A4") = Sh.Name 'vi du
'Code cua ban
End If
Next Sh
End Sub[/gpecode]

Đúng là mình muốn thực hiện các lệnh trên mỗi sheet.
 
Upvote 0
Nhưng muốn đưa vô vòng lặp để xử lí cùng 1 lệnh là nhu cầu chính đán mà!
Mình đoán thôi; Nếu 6 trang đó có thiết kế giống nhau. . . . . so với những mtrang còn lại

Một file mình có nhiều sheet, và 6 sheet kia là giống nhau về cấu trúc.
Mình muốn thực hiện 1 đoạn code lần lượt trên 6sheet theo thứ tự từ Sh1 -> Sh6

Thanks mọi người đã giúp đỡ. Mới tập tành viết code VBA nên còn ngố ngố /-*+/
 
Upvote 0
Mã:
for sNum = 0 to 5
set sh = Sheets(Split("[COLOR=#000000]Estimation_Y;[/COLOR][COLOR=#000000]Estimation_N;[/COLOR][COLOR=#000000]Estimation_NA;[/COLOR][COLOR=#000000]Dedicated_Y;[/COLOR][COLOR=#000000]Dedicated_N;[/COLOR][COLOR=#000000]Dedicated_NA", ";")(sNum))
[/COLOR][COLOR=#000000]' thao tác với sh ở đây ....
[/COLOR]next sNum

Tôi chỉ gợi ý tưởng thôi. Viết code cho rõ ràng dễ hiểu là chuyện của bạn.
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom