Giúp mình chuyển đoạn code từ VBA sang VSTO( Vb.net hoặc C#- C# càng tốt nha)

Liên hệ QC

hoanganhcuong87

Thành viên mới
Tham gia
28/3/10
Bài viết
20
Được thích
4
Giúp mình chuyển đoạn code từ VBA này sang VSTO( Vb.net hoặc C#- C# càng tốt nha):
PHP:
Private Sub Worksheet_Change(ByVal Target As Range) '
Dim tim As Range
If Not Application.Intersect(Target, [c7:c17]) Is Nothing Then
    Set tim = Sheet2.[b3:b10].Find(Target, LookAt:=xlWhole)
        If tim Is Nothing Then
            frmcsdl.Show
        Else
            Target.Offset(, 1) = Sheet2.[b3:b10].Find(Target, LookAt:=xlWhole).Offset(, 1)
        End If
End If
End Sub

Mong mọi người giúp mình với nha!
 
Mọi người ơi giúp mình với! Mình mới tiếp cận nên mù tịt...
 
Lần chỉnh sửa cuối:
Upvote 0
Chuyển không thì dễ nhưng để nó chạy được lại là vấn đề khác bạn ạ....
VSTO không tự nhiên có interop của Microsoft và thư viện Excel nên bạn phải tự mình đặt reference (tham chiếu) cho nó. Ngoài ra, phải nói thêm, nếu bạn chuyển sang vb.net thì cái đó chả khác gì cả. với C# thì hơi khác một chút.
Thêm điều nữa, thủ tục trên là một sự kiện của Excel và được kích hoạt khi có thay đổi trên trang tính, khi đưa sang VSTO nó sẽ không có tác dụng như vậy nữa mà nó chỉ còn là một thủ tục, nó chỉ thực thi khi bạn gọi thôi.
Trang web giúp chuyển nhanh mã từ VB.Net sang C# ở đây (bạn có thể phải sửa đôi chút khi chuyển từ vba), nếu dùng trong VB.net thì đơn giản, gần như không phải sửa gì.
http://www.developerfusion.com/tools/convert/vb-to-csharp/

PHP:
private void Worksheet_Change(Range Target)
{
    Range tim;
    if (!Application.Intersect(Target, Ranges("c7:c17"))) {        
        tim = Sheet2.("b3:b10").Find(Target, LookAt=xlWhole);
        if (!tim) {
            frmcsdl frm = new frmcsdl();
            frm.ShowDialog();        
        } else {
            Target.Offset(, 1) = Sheet2.Range("b3:b10").Find(Target, LookAt=xlWhole).Offset(, 1);
        }
    }
}
Đoạn code này chắc chắn sẽ không chạy được vì trong C# việc tương tác với bộ thư viện lớp VBA phức tạp hơn nhiêu. Cần phải có kinh nghiệm bên cạnh việc biết các truyền và sử dụng tham số.
Với VB.Net thì có thể code rất ngắn nhưng với C#, vấn đề khác nhiều.
Tôi nghĩ bạn nên ngâm cứu kỹ VBA đã rồi hẵng chuyển sang ngôn ngữ này, kia.
 
Upvote 0
Web KT
Back
Top Bottom