Nhờ người giúp đỡ về Array trong VB.Net

sownnuce

Thành viên mới
Tham gia ngày
8 Tháng tám 2020
Bài viết
5
Được thích
0
Điểm
13
Tuổi
25
em đang có 1 đoạn code phía dưới, em khai báo 1 biến array toàn cục. Vấn đề em thắc mắc và cần trợ giúp như sau:
1. dữ liệu của array MN() được lấy từ sub tinh_actan, có dùng chung cho sub loc không?
2. làm thế nào để hàm "dongi = Application.Match(GOC1, Range(NM(1, 3), NM(45, 3)), 1) " hoạt động đúng trên nền Vb net ?
có thể giúp em về đoạn mã và khai báo hàm array đúng ạ
-----------
Rất mong mọi người giúp em. Em xin trân thành cám ơn
Mã:
Dim MN()
Sub TINH_ACTAN()
Dim app As Excel.Application
        Dim wb As Excel.Workbook
        Call Selection_excel.exapp(app, wb)
        Dim sh As Excel.Worksheet = wb.ActiveSheet
        Dim BDN_MX As Excel.Range
        Dim dd As Integer
        dd = sh.Range("A4").Value
        BDN_MX = sh.Range("C" & dd + 1 & ":D" & dd + 45)
                ReDim MT_MX(0 To BDN_MX.Rows.Count, 0 To 3)
        For k = 1 To BDN_MX.Rows.Count
            MN(k, 1) = BDN_MX(k, 1) : MN(k, 2) = BDN_MX(k, 2) : MN(k, 3) = BDTT_TINH.actan(BDN_MX(k, 1).VALUE, BDN_MX(k, 2).VALUE)
NEXT K
END SUB
Sub loc(ByVal n As Double, ByVal m As Double, NM As RANGE, ByRef hsat As Double)
        Dim n1, n2, m1, m2, l1, l2, goc2, goc3, gox1, gox2 As Double
        Dim dongi As Integer
        Dim GOC1, NUMU As Double
        GOC1 = Val(actan(n, m))
        dongi = Application.Match(GOC1, Range(NM(1, 3), NM(45, 3)), 1)
msgbox (dongi)
end sub
 

VetMini

Chuyên gia GPE
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
10,129
Được thích
12,273
Điểm
1,560
Cứ khai báo toàn cục trong một Modulke thì tất cả các sub/fucntion đều dùng được.

Chú: khai báo Dim MN() thì MN là mảng động. Lúc ấy nó chưa được cấp phát vị trí trong bộ nhớ, con trỏ mảng chả chỉ vào đâu cả. Trước khi dùng nó lần đầu tiên thì phải Redim nó.
Code của bạn chỉ Redim MT_MX chứ không hề Redim MN. Và vì vậy, bạn không thể dùng MN(k, 1)
 

sownnuce

Thành viên mới
Tham gia ngày
8 Tháng tám 2020
Bài viết
5
Được thích
0
Điểm
13
Tuổi
25
Cứ khai báo toàn cục trong một Modulke thì tất cả các sub/fucntion đều dùng được.

Chú: khai báo Dim MN() thì MN là mảng động. Lúc ấy nó chưa được cấp phát vị trí trong bộ nhớ, con trỏ mảng chả chỉ vào đâu cả. Trước khi dùng nó lần đầu tiên thì phải Redim nó.
Code của bạn chỉ Redim MT_MX chứ không hề Redim MN. Và vì vậy, bạn không thể dùng MN(k, 1)
VÂNG Ạ. ĐÚNG VỊ TRÍ E ĐÃ SAI Ở ĐÂY:
" ReDim MT_MX(0 To BDN_MX.Rows.Count, 0 To 3) "
TUY NHIÊN KHI SỬA LẠI THÌ EM CÓ BỔ SUNG 1 HÀM KIỂM TRA NÓ . code như sau ạ

Mã:
 Sub getdata()
        MsgBox(MT_MX(2, 2).text)
    End Sub
kết quả vẫn không được trả lại và có thông báo lỗi ạ
 

VetMini

Chuyên gia GPE
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
10,129
Được thích
12,273
Điểm
1,560
MsgBox(MT_MX(2, 2).text)

Kiến thức về array của bạn loạn cả lên. Cần học lại từ đầu.
Array căn bản làm gì có hàm hay thuộc tính text
 

sownnuce

Thành viên mới
Tham gia ngày
8 Tháng tám 2020
Bài viết
5
Được thích
0
Điểm
13
Tuổi
25
MsgBox(MT_MX(2, 2).text)

Kiến thức về array của bạn loạn cả lên. Cần học lại từ đầu.
Array căn bản làm gì có hàm hay thuộc tính text
Bác giúp em với. cho đủ các loại hậu tố hay không có gì tất cả đều bị thông báo này đây bác ạ
1599555372015.png
 
Top Bottom