Sinh nội dung tự động theo điều kiện và kiểm tra đ/k đó để sinh 1 số ngẫu nhiêu!

Liên hệ QC

kojin2001

Thành viên mới
Tham gia
11/5/10
Bài viết
2
Được thích
0
Xin chào các bạn !
Mình mới học excel nên còn nhiều bỡ ngỡ xin các bạn giúp đỡ mình.
Mình có đang gặp khó khăn trong việc trong việc sinh và kiểm tra mã sử dụng marco.(Mình dùng marco vì người dùng chỉ cần insert thêm dòng là dùng được luôn)
Mình có cột B là cột nhập liệu , cột M lấy dữ liệu từ cột B (M = B) .
Mình có cột C là cột nhập liệu , cột L lấy dữ liệu từ cột B (L = C) .

Khi cột B thay đổi thông tin --> cột M thay đổi đồng thời cột K sẽ sinh ra 1 số ngẫu nhiên
Khi cột C thay đổi thông tin --> cột L thay đổi đồng thời cột K sẽ sinh ra 1 số ngẫu nhiên

Khi cột B không thay đổi thông tin --> cột M cũng thông thay đổi --> Cột K không sinh ngẫu nhiên nữa.
Khi cột C không thay đổi thông tin --> cột L cũng thông thay đổi --> Cột K không sinh ngẫu nhiên nữa.

Mình đã được việc thay đổi như trên nhưng khi mình thay đổi xong ( ví dụ B2 ) mà click xuống dòng (B3) thì cột (M2) không lấy được dữ liệu từ (B2) (tương tự với C và L). Còn khi mình click trên cùng 1 hàng (B2) sang (C2) thì ( M2) mới thay đổi .

Mình có gửi file đính kèm
Mong các bạn có thể hướng dẫn mình sửa lỗi này !
Mình chân thành cám ơn !
 

File đính kèm

Code gì mà dài lê thê quá chừng, đọc sưng con mắt.
Chủ yếu lỗi là do các câu lệnh Set
Set r1 = ActiveCell
Set r2 = ActiveCell
Set r3 = ActiveCell
Set r4 = ActiveCell
Set r5 = ActiveCell
Khi enter thì active cell nhảy xuống dòng kế, ActiveCell.Row bị thay đổi, các điều kiện dựa vào ActiveCell.Row không thoả, nên code không chạy.

Cách 1: Set r1 = Target.Offset(0, 1), Set r2 = Target.Offset(0, 1), Set r3 = ...
Cách 2: Viết lại toàn bộ code đặt điều kiện dựa trên Target.Row, khỏi r1, r2, .... gì nữa
 
Upvote 0
Thực sự thấy yêu cầu chỉ là con rô don nhưng code hoành tráng quá nên không thể đọc hay phân tích ra sao nữa. Mặt khác kỳ này cúp điện nên tranh thủ từng lúc được thôi. Vậy gửi bạn đoạn code tý xíu bạn thử xem sao:

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Column = 2 Or .Column = 3 Then
.Offset(, 10) = .Value
.Offset(, 11 - .Column) = Int(Rnd() * 100000000000#)
End If
End With
End Sub
Hiện đang không có tiêu đề nếu sau có tiêu đề thì thêm đoạn sau để khi ở vùng tiêu đề thì bỏ (Giả sử tiêu đề đến dòng 4):

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
if .Row<5 then exit sub
..............................
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cám ơn các bạn đã giúp đỡ mình đã hoàn thành rồi !
 
Upvote 0
Web KT

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

Back
Top Bottom