Làm cách nào để nhận biết tên các sheets trong vòng lặp

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

Verona

Thành viên mới
Tham gia
26/9/07
Bài viết
9
Được thích
1
Các bạn ơi cho mình hỏi, mình có một sheets(“input”) là các đầu mục hàng hóa
VD như A1: Keo , A2: Banh , A3 la Sua
Tương ứng cũng có tên 3 sheets tương ứng với các giá trị tên kia
Các sheets này dều có form giống nhau vì vậy mình cần chạy
For i = 1 to 3
For j = 1 to 1000
Next j
Next i

J là các giá trị mình cần nhặt ra.. nhưng mình không biết làm cách nào để nhận biết tên các sheets kia trong vòng lặp đó. Vì bảng này mình ghép và lập trong thời gian khác nhau nên các sheet.codename cũng không theo thứ tự.các bạn có cách nào giúp mình với
Mình xin cảm ơn



---------------------------------
Lần sau bạn đừng đặt tiêu đề như vầy nữa nhé: "Mình gắp rắc rối với sheets. Mong các bạn giúp đỡ"
Những bài với tiêu đề như vậy sẽ bị xóa. Vì bạn là thành viên mới, nên chỉ nhắc nhở.
Bạn nên đặt tiêu đề cho bài viết giống như tiêu đề tôi đã sửa cho bạn.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Vị trí của sheet sẽ được đánh số thứ tự từ trái qua phải... Bạn có sheet Input nằm ờ đầu bên trái, vậy nó sẽ có số thứ tự là 1... 3 sheet còn lại sẽ có số thứ tự 2, 3 và 4
Để duyệt qua các sheet Keo, Banh và Sua thì bạn dùng vòng lập:
For i = 2 to 4
Sheets(i).....
.......

Nếu 3 sheet này nằm ở đầu bên trái, Input nằm cuối cùng thì: For i = 1 to 3
Đại khái là vậy
 
Upvote 0
cám ơn mod đã giúp mình sửa tên topic
----
trong file của mình có rất nhiều sheets khác nhau và mỗi lần cần nhặt số liệu mình chỉ muốn nhặt trong những sheets nhất định. Vì vậy tại sheets input mình có một cột ghi tên các sheets sẽ nhặt số liệu từ đó. Vì vậy không thể dùng sheets(i).. vì i là số, còn tên sheets của mình lại là Sheets("banh"), sheets("keo").....
 
Upvote 0
Bạn mở VBA ra, bên cửa sổ Project-VBAProject có ghi Sheet1 (Tensheet). Cái tên bạn đặt sẽ được nằm ở ô Name bên dưới còn tên sheet mặt định luôn có số. Vậy bạn dựa theo số này và tên sheet để biết được sheet name của bạn là số mấy nha!
Vậy là code vẫn chạy tốt mặt dù chỉ là số thôi đúng không?
 
Upvote 0
Nhiều cách lắm! Nhưng vì bạn không đưa file lên nên khó hình dung bạn dự định làm gì!
Nếu muốn lấy tên sheet thì có thể dùng:
For i = ??? to ???
If Sheets(i).Name = "Tên sheet nào đó bạn cần" then
..... Code....
Next i
 
Upvote 0
Mình tham gia với bạn là sử dụng NameCode. Như vậy, bạn có đổi tên trang tính là gì đi nữa thì namecode của nó vẫn không đổi. Vd bạn đổi toàn bộ các sheet cần lấy dữ liệu thành S1, S2....


so = Worksheets.Count
For i = 1 To so
If Worksheets.Item(i).CodeName = "S"&i Then

...code...
end if
Next


Mình lỗi xin sửa lại
 
Lần chỉnh sửa cuối:
Upvote 0
cảm ơn các bạn, vì các sheets của mình có tên khác nhau nên phải dùng namecode. tuy nhiên vì nhiều sheets và được del, insert trong thời gian khác nhau nên các code của các sheets khác nhau . ví dụ có 1.2,3,5 (tức là ko có 4) nên khi mình đặt lệnh như dưới đây đến lúc i = 4 sẽ báo lỗi
for i = 1 to 10
if sheets(i).name = maso then
....
end if
next i

(note: maso mình đã mặc đinhơr sheet input)
 
Lần chỉnh sửa cuối:
Upvote 0
Verona à, mình nghĩ bạn chỉ cần On error resume next là xong vì không thấy (bạn đã xóa) thì làm tiếp sheet khác
 
Upvote 0
Nếu tên sheet luôn cố định, bạn có thể dùng hàm Array:
Mã:
Sub Duyet_sheet()
  Dim i As Integer
  Dim Arr()
  Arr = Array("banh", "keo", "sua", "duong")
          For i = 0 To 3
               Sheets(Arr(i)).Select
               Cells(1, 1) = 50
         Next
 End Sub
 
Upvote 0
Verona à, để nhập codename đúng bạn bổ sung đoạn mã sau để nhắc khi nhập:

Public Sub chon()
so = Worksheets.Count
For i = 1 To so
With Worksheets.Item(i)
tb = tb & "Trang :--" & .Name & " -- CodeName la:-- " & .CodeName & Chr(13)
End With
Next
maso = InputBox(tb, "CHON CODENAME PHU HOP")

End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
cảm ơn các bạn, mình chạy được rồi.. cảm ơn nhiều ^^
 
Upvote 0
Web KT

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

Back
Top Bottom