trantuonganh2008
Thành viên thường trực
- Tham gia
- 8/11/08
- Bài viết
- 305
- Được thích
- 53
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B2:B99")) Is Nothing Then
Dim Sh As Worksheet, Rng As Range, sRng As Range
Set Sh = Sheets("Sheet3"): Set Rng = Sh.Range(Sh.[a4], Sh.[A65500].End(xlUp))
5 Rng.NumberFormat = "m/d/yyyy"
6 Set sRng = Rng.Find(Format(Target.Offset(, -1).Value, "M/D/yyyy"), , xlFormulas, xlWhole)
If sRng Is Nothing Then
MsgBox "Chua Co Ngay Nay Trong Danh Sach", , "GPE.COM"
Else
sRng.Offset(, 1).Value = Target.Value
End If
Rng.NumberFormat = "[$-409]d-mmm;@"
End If
End Sub
[B]Rng.Value = Rng.Value[/B]
Set sRng = Rng.Find(Format(Target.Offset(, -1).Value, "M/D/yyyy"), , [B]xlValues[/B], xlWhole)
Bạn hãy đối chiếu sự khác nhau giữa hai nội dung macro đi nha!Cám ơn bạn nhiều!!! Nhờ bạn giúp mình thêm v/d này nữa. Bây giờ mình muốn nhập dữ liệu tiếp tục ở cột B (sheet2), chẳng hạn ở B6 nhưng vẫn là ngày 5 Jan, sau đó dữ liệu này sẽ cập nhật sang sheet3 ở cột C cũng của ngày 5 Jan thì phải sửa lại code như thế nào. Cứ như vậy sang cột D, E, F... Chờ tin bạn, cám ơn nhiều!!!
(Yêu cầu quan trọng là Các ô dưới A5 phải để trống (cho đến khi muốn nhập ngày khác kế tiếp)|A|B|
|. .|. . |
5|5-Jan|M1
6||M2
7||M3
8||M4
9|. .|. .
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B2:B99")) Is Nothing Then
Dim Sh As Worksheet, Rng As Range, sRng As Range
Dim nRw As Long
Set Sh = Sheets("Sheet3"): Set Rng = Sh.Range(Sh.[a4], Sh.[A65500].End(xlUp))
Rng.NumberFormat = "m/d/yyyy"
With Target.Offset(, -1)
If .Value <> "" Then
nRw = 1
Else
nRw = Range(.Offset(), .End(xlUp)).Rows.Count
End If
End With
Set sRng = Rng.Find(Format(Target.Offset(1 - nRw, -1).Value, "M/D/yyyy"), _
, xlValues, xlWhole)
If sRng Is Nothing Then
MsgBox "Chua Co Ngay Nay Trong Danh Sach", , "GPE.COM"
Else
sRng.Offset(, nRw).Value = Target.Value
End If
Rng.NumberFormat = "[$-409]d-mmm;@"
End If
End Sub
. . . Hơn nữa, ý mình muốn là khi nhập vào cột B dữ liệu bất ở đâu chứ không phải là áp nó theo thứ tự theo hàng dọc rồi upload dữ liệu theo hàng ngang qua sheet3.
Chẳng hạn:
- Khi đã có ngày ở cột A, nhập dữ liệu vào cột B, thì dữ liệu có được ở sheet3 (có ngày tương ứng) có thể là cột B hoặc C hoặc D... có nghĩa là mình muốn nó vào cột nào thì nó vào cột đó. Nhập thêm dữ liệu ở sheet2 tiếp theo thì dữ liệu cũng vào theo ý muốn của mình. Hình như là dùng If và ElseIf mới được. Bạn cố gắng sửa code giúp mình lại nhé. Cám ơn bạn nhiều!!!
Thân.
Khi đã có ngày ở cột A, nhập dữ liệu vào cột B, thì dữ liệu có được ở sheet3 (có ngày tương ứng) có thể là cột B hoặc C hoặc D... có nghĩa là mình muốn nó vào cột nào thì nó vào cột đó
Thì ý mình là như vậy đó, bạn chỉnh sửa code lại dùm mình nhé! Cám ơn bạn hiền nhiều nhe!!!
Thân.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B2:B99")) Is Nothing Then
Dim Sh As Worksheet, Rng As Range, sRng As Range
Dim nRw As Long
Set Sh = Sheets("Sheet3"): Set Rng = Sh.Range(Sh.[a4], Sh.[A65500].End(xlUp))
Rng.NumberFormat = "m/d/yyyy"
With Target.Offset(, -1)
If .Value <> "" And IsDate(.Value) Then
Set sRng = .Offset()
Else
Set sRng = .End(xlUp)
End If
End With
Set sRng = Rng.Find(Format(sRng.Value, "M/D/yyyy"), , xlValues, xlWhole)
If sRng Is Nothing Then
MsgBox "Chua Co Ngay Nay Trong Danh Sach", , "GPE.COM"
Else
17 Randomize: nRw = 1 + Int(9 * Rnd())
If sRng.Offset(, nRw).Value = "" Then
sRng.Offset(, nRw).Value = Target.Value
Else
On Error GoTo 0
Cells(sRng.Row, 255).End(xlToLeft).Offset(, 1).Value = Target.Value
End If
End If
Rng.NumberFormat = "[$-409]d-mmm;@"
End If
End Sub
Nhập dữ liệu tiếp theo ở cột B trong sheet 2 cách dữ liệu trước 8 dòng
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B2:B99")) Is Nothing Then
Dim Sh As Worksheet, Rng As Range, sRng As Range, Dat As Range
Dim nRw As Long
Set Sh = Sheets("Sheet3"): Set Rng = Sh.Range(Sh.[a4], Sh.[A65500].End(xlUp))
Rng.NumberFormat = "m/d/yyyy"
With Target.Offset(, -1)
If .Value <> "" And IsDate(.Value) Then
Set Dat = .Offset()
Else
Set Dat = .End(xlUp)
End If
End With
Set sRng = Rng.Find(Format(Dat.Value, "M/D/yyyy"), , xlValues, xlWhole)
If sRng Is Nothing Then
MsgBox "Chua Co Ngay Nay Trong Danh Sach", , "GPE.COM"
Else
If sRng.Offset(, 1).Value = "" Then
sRng.Offset(, 1).Value = Target.Value
Else
Sh.Cells(sRng.Row, 255).End(xlToLeft).Offset(, 1).Value = Target.Value
End If
End If
Rng.NumberFormat = "[$-409]d-mmm;@"
End If
End Sub