Sự kiện change của Cell trong Range

Liên hệ QC

hiphoang.prodixetho

Thành viên mới
Tham gia
1/11/11
Bài viết
36
Được thích
2
Em có một Range[A1:A10] . Làm thế nào bắt sự kiện Change trong tất cả các cell của range đó.?
Vì em muốn khi Paste dữ liệu vào trong Range[A1:A10] thì tất cả các Cell trong Range[A1:A10] nhận được giá trị thì ĐỒNG THỜI THỰC HIỆN việc gì đó chứ ko phải là thực hiện tuần tự( em đang dùng for để đếm và thực hiện LÂU QUÁ). Mong các cao thủ giúp đỡ. Em là Gà. hì hì
 
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, [A1:A10]) Is Nothing Then
       'Dòng lệnh của bạn
End If
End Sub

Theo mình là vậy, không biết có đúng ý bạn không?
 
Upvote 0
Như của bạn thì chẳng có gì khác với sự kiện change của Range[A1:A10]. chẳng qua bản chất là bạn lấy giao của 2 range và change của range đó. Vẫn vậy bạn ạ.
 
Lần chỉnh sửa cuối:
Upvote 0
Hay là mình gán 1 cái name cho vùng dữ liệu này xem sao. Nếu insert dòng hay delete dòng thì name sẽ tự thay đổi theo.
 
Upvote 0
Như của bạn thì chẳng có gì khác với sự kiện change của Range[A1:A10]. chẳng qua bản chất là bạn lấy giao của 2 range và change của range đó. Vẫn vậy bạn ạ.
Không thể nào vẫn vậy được.
Do kyo nghĩ rằng bạn hiểu nên chỉ viết ngắn gọn, thực ra đã giải đáp câu hỏi của bạn.

Bạn muốn là:
khi tất cả các Cell trong Range[A1:A10] nhận được giá trị thì ĐỒNG THỜI THỰC HIỆN việc gì đó chứ ko phải là thực hiện tuần tự

Vậy kyo viết "câu lệnh của bạn" trong code bạn phải hiểu là câu lệnh dùng chung cho cả range, chứ không phải câu lệnh cho từng cell trong range.

Ngoài ra, câu hỏi của bạn không rõ ràng, người ta sẽ hiểu rằng bạn gặp khó khăn đối với target (tuần tự cái gì? tuần tự từng ô trong range, hay tuần tự từng target?)

Còn về việc chạy chậm do dùng vòng lặp for, bạn không nói rõ trong vòng for bạn đã làm cái gì.

Nếu bạn đưa file mẫu, hoặc ít nhất là đoạn code bạn đã dùng thì đã giải đáp xong từ đời nào rồi.
 
Upvote 0
Mã:
        private void DONGIA_Change(Microsoft.Office.Interop.Excel.Range Target)
        {
            TM = Target.Value2.ToString().ToUpper();
            writeSchema();
            dong2 = DONGIA.Rows.Count;
            OdbcCommand cmd = CMD();
            OdbcDataAdapter Adp = new OdbcDataAdapter(cmd);
            DataTable dt = new DataTable();
            Adp.Fill(dt);
            int a;
            a = dt.Rows.Count;
            Diachitaget = Target.get_AddressLocal(missing, missing, Excel.XlReferenceStyle.xlA1, missing, missing).ToString();
            if (a == 1)
            {
                Application.EnableEvents = false;
                Target.Value2 = dt.Rows[0][0].ToString();
                Application.EnableEvents = true;
                Application.EnableEvents = false;
                Globals.Sheet2.Range[Diachitaget, Diachitaget].Value2 = Target.Value2;
                Application.EnableEvents = true;
                Target.get_Offset(0, 1).Value2 = dt.Rows[0][1].ToString();
                Globals.Sheet2.Range[Diachitaget, Diachitaget].get_Offset(0, 2).Value2 = Target.get_Offset(0, 1).Value2;
                Target.get_Offset(0, 1).Rows.AutoFit();
                Globals.Sheet2.Range[Diachitaget, Diachitaget].get_Offset(0, 2).Rows.AutoFit();
                Target.get_Offset(0, 2).Value2 = dt.Rows[0][2].ToString();
                Globals.Sheet2.Range[Diachitaget, Diachitaget].get_Offset(0, 3).Value2 = Target.get_Offset(0, 2).Value2;
                Target.get_Offset(0, 4).Value2 = dt.Rows[0][3].ToString();
                Target.get_Offset(0, 5).Value2 = dt.Rows[0][4].ToString();
                Target.get_Offset(0, 6).Value2 = dt.Rows[0][5].ToString();
            }
           ....

Đây là một đoạn nhỏ trong code của mình. Mình viết VSTO! Mình làm cái TRA ĐINH MỨC . Mình muốn khi paste nhiều mã vào nhiều Cell trong range thì thực hiên kết nối lấy csdl tương ứng với mã Đinh mức ấy.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom