hix cảm ơn bác nhiều, bác có rành chỉnh giúp tui với ^^Code của bạn là sự kiện mà, muốn nó chạy thì bạn phải thao tác trên cột A, mà code sai béc hết.
Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long
If Intersect(Target, Range("C:C")) Is Nothing Then Exit Sub
For i = 8 To Range("C" & Rows.Count).End(xlUp).Row
If Range("C" & i) = "" Then Range("A" & i) = ""
Else
Range("A" & i) = Application.WorksheetFunction.CountA(Range("C8:C" & i))
End If
Next i
End Sub
Trên máy mình, Excel 2007, thì thấy chạy tốt. Không biết trên máy khác thì như thế nàoBạn có chắc code của bạn chạy được???
Code này không chạy được hhoang_56 ơi.Bạn thử code này xem sao
Mã:Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long If Intersect(Target, Range("C:C")) Is Nothing Then Exit Sub For i = 8 To Range("C" & Rows.Count).End(xlUp).Row If Range("C" & i) = "" Then Range("A" & i) = "" Else Range("A" & i) = Application.WorksheetFunction.CountA(Range("C8:C" & i)) End If Next i End Sub
Cũng hok chạy được bác ơi!Dùng code này. Thao tác thay đổi giá trị tại cột C thì code làm việc... Chắc bạn muốn vậy đúng không?
Mã:Private Sub Worksheet_Change(ByVal Target As Range) Dim sArr, dArr, I As Long, TT sArr = Range("C7", Range("C65000").End(3)).Value ReDim dArr(1 To UBound(sArr), 1 To 1) If Not Intersect(Range("C7", Range("C65000").End(3)), Target) Is Nothing Then For I = 1 To UBound(sArr) If sArr(I, 1) <> Empty Then TT = TT + 1 dArr(I, 1) = TT End If Next I Range("A7").Resize(1000).ClearContents Range("A7").Resize(I - 1).Value = dArr End If End Sub
Xin lỗi mọi người, do bị lỗi copy - paste khi post bài nên code bị sai lệchCode này không chạy được hhoang_56 ơi.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Intersect(Target, Range("C:C")) Is Nothing Then Exit Sub
For i = 8 To Range("C" & Rows.Count).End(xlUp).Row
If Range("C" & i) = "" Then
Range("A" & i) = ""
Else
Range("A" & i) = Application.WorksheetFunction.CountA(Range("C8:C" & i))
End If
Next i
End Sub
Code này bị lỗi, chưa hoàn chỉnhDùng code này. Thao tác thay đổi giá trị tại cột C thì code làm việc... Chắc bạn muốn vậy đúng không?
Mã:Private Sub Worksheet_Change(ByVal Target As Range) Dim sArr, dArr, I As Long, TT sArr = Range("C7", Range("C65000").End(3)).Value ReDim dArr(1 To UBound(sArr), 1 To 1) If Not Intersect(Range("C7", Range("C65000").End(3)), Target) Is Nothing Then For I = 1 To UBound(sArr) If sArr(I, 1) <> Empty Then TT = TT + 1 dArr(I, 1) = TT End If Next I Range("A7").Resize(1000).ClearContents Range("A7").Resize(I - 1).Value = dArr End If End Sub
Lỗi thì lỗi gì, phải nói rõ ra. Đừng chỉ phán suông như vậy làm hoang man dư luậnCode này bị lỗi, chưa hoàn chỉnh
Code của hpkhuong mình test thử thì thấy có lỗi như sau:Lỗi thì lỗi gì, phải nói rõ ra. Đừng chỉ phán suông như vậy làm hoang man dư luận
Tôi thì tôi phát hiện một lỗi mà cả 2 bạn đều mắc phải. Nhưng để xem lỗi mà bạn nói là cái gì cái đã.
ReDim dArr(1 To UBound(sArr), 1 To 1)
Theo bạn, với code của mình post lên thì bạn sửa lại ra saoCả hai bạn đều chưa tính đến trường hợp khi xóa các dòng cuối của cột C
Tôi sửa code bài 4. Code của bạn lấy và gán giá trị trực tiếp vào từng ô, không phù hợp để áp dụng thực tế.Theo bạn, với code của mình post lên thì bạn sửa lại ra sao
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sArr, i As Long, TT
If Not Intersect(Columns(3), Target) Is Nothing Then
sArr = Range("C1", Range("C65000").End(3).Offset(1)).Value
For i = 1 To UBound(sArr)
If sArr(i, 1) <> Empty Then
TT = TT + 1
sArr(i, 1) = TT
End If
Next i
Columns(1).ClearContents
Range("A1").Resize(UBound(sArr)).Value = sArr
End If
End Sub