tiendat210
Thành viên mới

- Tham gia
- 3/5/11
- Bài viết
- 25
- Được thích
- 5
Tự nghiên cứu bẫy lỗi nếu không tìm thấy nhéXin mọi người giúp em cod VBA chọn ô theo điều kiện là: Cell được active có dòng là dòng đang được active, cột là cột chứa dữ liệu ngày tháng cần tìm kiếm. Em nói có thể chưa rõ ý lắm nên có làm file kèm theo. Mong mn giúp đỡ với ạ
With ActiveSheet
.Cells(ActiveCell.Row, .Rows(2).Find(.Cells(5, "B"), , xlValues).Column).Select
End With
Sub Chon()
On Error GoTo loi
Cells(ActiveCell.Row, Evaluate("=MATCH(B5,2:2,0)")).Select
Exit Sub
loi:
MsgBox "Khong tim thay!"
End Sub
Dạ, cám ơn bác. Cod của bác em làm ra file khác thì ok. Mà đưa vào file thực thi thì không được. Nó liên quan gì đó đến format ngày tháng. Mà em làm đủ kiểu format cho giống rồi mà nó không được. Em đang mò tiếp. Lên để cám ơn bác cái đã. Nếu bác có cách nào khác thì chỉ em với nhaTự nghiên cứu bẫy lỗi nếu không tìm thấy nhé
Mã:With ActiveSheet .Cells(ActiveCell.Row, .Rows(2).Find(.Cells(5, "B"), , xlValues).Column).Select End With
Cám ơn bác.Sao em làm mà nó toàn báo là không tìm thấy nhỉ? Em copy và paste ngày vào ô B5 mà nó cũng không thấy ạ.Làm thử:
[PHP:Sub Chon() On Error GoTo loi Cells(ActiveCell.Row, Evaluate("=MATCH(B5,2:2,0)")).Select Exit Sub loi: MsgBox "Khong tim thay!" End Sub
Sub chongay()
On Error GoTo loi
Cells(ActiveCell.Row, Evaluate("=MATCH('PHAN CHIA'!I4,5:5,0)")).Select
Exit Sub
loi:
MsgBox "Khong tim thay!"
End Sub
Cám ơn bác. Em làm được rồi ah. Bác làm đúng ý em luôn.Mà bạn làm cái selection_change even làm chi vậy để mỗi lần chọn ô là 1 lần refresh screen?PHP:Sub chongay() On Error GoTo loi Cells(ActiveCell.Row, Evaluate("=MATCH('PHAN CHIA'!I4,5:5,0)")).Select Exit Sub loi: MsgBox "Khong tim thay!" End Sub
Bạn tham khảo thêm cách xài FIND() lúc rỗi, như sau:Dạ, cám ơn bác. Cod của bác em làm ra file khác thì ok. Mà đưa vào file thực thi thì không được. Nó liên quan gì đó đến format ngày tháng. Mà em làm đủ kiểu format cho giống rồi mà nó không được. Em đang mò tiếp. Lên để cám ơn bác cái đã. Nếu bác có cách nào khác thì chỉ em với nha
STT | Ngày | Nhập | Xuất | Tồn | 20 | ||||||||||||
42 | 50 | 40 | Kết quả | ||||||||||||||
1 | 18/02/2022 | 1 | 2 | 3 | 26/02/2022 | ||||||||||||
2 | 20/02/2022 | 1 | 2 | 3 | 5/3/2022 | ||||||||||||
3 | 21/02/2022 | 3 | 2 | 1 | 12/3/2022 | ||||||||||||
4 | 22/02/2022 | 1 | 2 | 3 | 19/03/2022 | ||||||||||||
5 | 23/02/2022 | 3 | 2 | 1 | 26/03/2022 | ||||||||||||
6 | 24/02/2022 | 2 | 3 | 1 | 2/4/2022 | ||||||||||||
7 | 25/02/2022 | 1 | 2 | 3 | 9/4/2022 | ||||||||||||
8 | 26/02/2022 | 3 | 2 | 1 | 16/04/2022 | ||||||||||||
9 | 27/02/2022 | 2 | 3 | 1 | 16/04/2022 | ||||||||||||
10 | 28/02/2022 | 1 | 2 | 3 | |||||||||||||
11 | 01/03/2022 | 3 | 2 | 1 | |||||||||||||
12 | 02/03/2022 | 2 | 3 | 1 | |||||||||||||
13 | 12/03/2022 | 1 | 2 | 3 | |||||||||||||
14 | 13/03/2022 | 3 | 2 | 1 | |||||||||||||
15 | 14/03/2022 | 2 | 3 | 1 | |||||||||||||
16 | 06/03/2022 | 1 | 2 | 3 | |||||||||||||
17 | 07/03/2022 | 3 | 2 | 1 | |||||||||||||
18 | 08/03/2022 | 2 | 3 | 1 | |||||||||||||
19 | 09/03/2022 | 1 | 2 | 3 | |||||||||||||
20 | 10/03/2022 | 3 | 2 | 1 | |||||||||||||
21 | 11/03/2022 | 2 | 3 | 1 | |||||||||||||
22 | 03/03/2022 | 1 | 2 | 3 | |||||||||||||
23 | 04/03/2022 | 3 | 2 | 1 | |||||||||||||
24 | 05/03/2022 | 2 | 3 | 1 | |||||||||||||
25 | 15/03/2022 | 3 | 2 | 1 | |||||||||||||
26 | 16/04/2022 | 2 | 3 | 1 | |||||||||||||
27 | 17/03/2022 | 2 | 3 | 1 | |||||||||||||
. . . . . . . . |
Sub TimVaLietKeThuBay()
Dim Rng As Range, sRng As Range, WF As Object
Dim MyAdd As String
Dim J As Long, Rws As Long, fDat As Date, lDat As Date, Dat As Date, W As Integer
Set WF = Application.WorksheetFunction
Rws = [B2].CurrentRegion.Rows.Count
ReDim Arr(1 To Rws, 1 To 1)
Set Rng = [B3].Resize(Rws)
Rng.NumberFormat = "MM/DD/yyyy"
fDat = WF.Min(Rng): lDat = WF.Max(Rng)
For J = 0 To 7
Dat = J + fDat
If Weekday(Dat) = 7 Then Exit For
Next J
For J = 0 To (lDat - fDat) Step 7
Set sRng = Rng.Find(Format(J + Dat, "MM/dd/yyyy"), , xlValues, xlWhole)
If Not sRng Is Nothing Then
MyAdd = sRng.Address
Do
W = W + 1: Arr(W, 1) = Format(sRng.Value, "DD/MM/yyyy")
Set sRng = Rng.FindNext(sRng)
Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
End If
Next J
If W Then
[H3].Resize(W).Value = Arr()
End If
Rng.NumberFormat = "dd/mm/yyyy"
End Sub