giaosy
Thành viên thường trực
- Tham gia
- 6/12/06
- Bài viết
- 205
- Được thích
- 144
Em muốn tận dụng sự kiện selection change của worksheet để tính toán giá trị tự động cho bảng dữ liệu nhưng khi em thực hiện việc chuyển dữ liệu từ bảng dữ liệu này sang bảng có liên quan thì phát sinh vấn đề: mỗi lần di chuyển con trỏ hoặc click chuột vào vùng giao với target của sự kiện selection change thì dữ liệu đã chuyển sang bảng liên quan lại bị chuyển sang thêm một lần nữa, tạo thành các dữ liệu bị trùng trong bảng này.
Em gửi kèm file nhờ các bác hướng dẫn cách khắc phục với.
Nếu không dùng selection change, liệu có cách nào khác để worksheet tự động tính toán giá trị trong bảng dữ liệu mà không cần phải bấm nút không.
Cảm ơn các bác.
đây là đoạn vba em đã mò mẫm
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim MyR As Range
On Error Resume Next
Set MyR = Intersect(Target, Range("e2:e17"))
If Not MyR Is Nothing Then
' tinh gia tri giao dich
If Target.Offset(0, -4).Value <> "" Then
Target.Offset(0, 1).Value = Target.Offset(0, -1).Value * Target.Value
ElseIf Target.Offset(0, -4).Value = "" Then
Target.Offset(0, 1).Value = ""
End If
' tu dong chuyen but toan giao dich sang bang giao dich tien
Range("i17").End(xlUp).Offset(1, 0).Value = Target.Offset(0, -4).Value
Range("i17").End(xlUp).Offset(0, 1).Value = Target.Offset(0, 1).Value
End If
End Sub
Em gửi kèm file nhờ các bác hướng dẫn cách khắc phục với.
Nếu không dùng selection change, liệu có cách nào khác để worksheet tự động tính toán giá trị trong bảng dữ liệu mà không cần phải bấm nút không.
Cảm ơn các bác.
đây là đoạn vba em đã mò mẫm
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim MyR As Range
On Error Resume Next
Set MyR = Intersect(Target, Range("e2:e17"))
If Not MyR Is Nothing Then
' tinh gia tri giao dich
If Target.Offset(0, -4).Value <> "" Then
Target.Offset(0, 1).Value = Target.Offset(0, -1).Value * Target.Value
ElseIf Target.Offset(0, -4).Value = "" Then
Target.Offset(0, 1).Value = ""
End If
' tu dong chuyen but toan giao dich sang bang giao dich tien
Range("i17").End(xlUp).Offset(1, 0).Value = Target.Offset(0, -4).Value
Range("i17").End(xlUp).Offset(0, 1).Value = Target.Offset(0, 1).Value
End If
End Sub