Mãng trong VBA - Không gán được giá trị xuống range. (1 người xem)

Người dùng đang xem chủ đề này

tan.ngohoangquoc

Thành viên hoạt động
Tham gia
10/7/14
Bài viết
100
Được thích
41
Nghề nghiệp
M&A Specialist - RM Assistant
Hi mọi người.
Em đang viết một đoạn code trong đó có một phần dùng mãng.
Mã:
Sub Test()Dim mArr(), sArr(), i As Long, EndRow As Long
    mArr = Sheets("Sheet1").Range("A1").CurrentRegion.Value
    EndRow = UBound(mArr, 1)
    ReDim sArr(EndRow, 1)
    For i = 1 To EndRow
        If mArr(i, 10) = "A" Then
            sArr(i, 1) = mArr(i, 11)
        End If
    Next
        Sheets("Sheet1").Range("M1").Resize(i - 1, 1) = sArr
End Sub

Em muốn dò tìm trong mảng bang đầu. Nếu mArr(i, 10) = "A" thì gán giá trị mArr(i, 11) vào sArr(i,1)
Và cuối cùng gán sArr xuống cột M nhưng gán xuống thì không có giá trị.
Thanks mọi người giúp đỡ /-*+/
 
Hi mọi người.
Em đang viết một đoạn code trong đó có một phần dùng mãng.
Mã:
Sub Test()Dim mArr(), sArr(), i As Long, EndRow As Long
    mArr = Sheets("Sheet1").Range("A1").CurrentRegion.Value
    EndRow = UBound(mArr, 1)
    ReDim sArr(EndRow, 1)
    For i = 1 To EndRow
        If mArr(i, 10) = "A" Then
            sArr(i, 1) = mArr(i, 11)
        End If
    Next
        Sheets("Sheet1").Range("M1").Resize(i - 1, 1) = sArr
End Sub

Em muốn dò tìm trong mảng bang đầu. Nếu mArr(i, 10) = "A" thì gán giá trị mArr(i, 11) vào sArr(i,1)
Và cuối cùng gán sArr xuống cột M nhưng gán xuống thì không có giá trị.
Thanks mọi người giúp đỡ /-*+/
Bạn đưa cả File nên để tôi xem dữ liệu của bạn mặt mũi nó ra sao?
 
Upvote 0
Mình đưa file lên.
Thanks mọi người
 

File đính kèm

Upvote 0
Hi mọi người.
Em đang viết một đoạn code trong đó có một phần dùng mãng.
Mã:
Sub Test()Dim mArr(), sArr(), i As Long, EndRow As Long
    mArr = Sheets("Sheet1").Range("A1").CurrentRegion.Value
    EndRow = UBound(mArr, 1)
    ReDim sArr(EndRow, 1)
    For i = 1 To EndRow
        If mArr(i, 10) = "A" Then
            sArr(i, 1) = mArr(i, 11)
        End If
    Next
        Sheets("Sheet1").Range("M1").Resize(i - 1, 1) = sArr
End Sub

Em muốn dò tìm trong mảng bang đầu. Nếu mArr(i, 10) = "A" thì gán giá trị mArr(i, 11) vào sArr(i,1)
Và cuối cùng gán sArr xuống cột M nhưng gán xuống thì không có giá trị.
Thanks mọi người giúp đỡ /-*+/
Sửa lại chỗ này
PHP:
....
ReDim sArr(EndRow, 1)
....
Sheets("Sheet1").Range("M1").Resize(i - 1, 1) = sArr
....
thành thế này xem sao
PHP:
....
ReDim sArr(1 to EndRow, 1)
....
Sheets("Sheet1").Range("M1").Resize(ubound(sArr), 1) = sArr
....
 
Upvote 0
Mình đưa nhầm File.
Sorry mọi người.
 

File đính kèm

Upvote 0
Hi mọi người.
Em đang viết một đoạn code trong đó có một phần dùng mãng.
Mã:
Sub Test()Dim mArr(), sArr(), i As Long, EndRow As Long
    mArr = Sheets("Sheet1").Range("A1").CurrentRegion.Value
    EndRow = UBound(mArr, 1)
    ReDim sArr(EndRow, 1)
    For i = 1 To EndRow
        If mArr(i, 10) = "A" Then
            sArr(i, 1) = mArr(i, 11)
        End If
    Next
        Sheets("Sheet1").Range("M1").Resize(i - 1, 1) = sArr
End Sub

Em muốn dò tìm trong mảng bang đầu. Nếu mArr(i, 10) = "A" thì gán giá trị mArr(i, 11) vào sArr(i,1)
Và cuối cùng gán sArr xuống cột M nhưng gán xuống thì không có giá trị.
Thanks mọi người giúp đỡ /-*+/
Sửa lại giúp bạn đây:
Mã:
Sub Test()
Dim mArr(), sArr(), i As Long, k As Long, EndRow As Long
    mArr = Sheet1.Range("A1:K" & Sheet1.Range("K65500").End(xlUp).Row)
    EndRow = UBound(mArr, 1)
    ReDim sArr(1 To EndRow, 1 To 1)
    For i = 1 To EndRow
        If mArr(i, 10) = "A" Then
            sArr(i, 1) = mArr(i, 11)
        End If
    Next
        Sheets("Sheet1").Range("M1").Resize(EndRow).Value = sArr
End Sub

Mình đưa nhầm File.
Sorry mọi người.
Tôi sửa lại chỗ đỏ đỏ:
Mã:
Sub Test()
Dim mArr(), sArr(), i As Long, EndRow As Long
    mArr = Sheet1.Range("A1").CurrentRegion.Value
    EndRow = UBound(mArr, 1)
   ReDim sArr(1 To EndRow, [B][COLOR=#ff0000]1 To 1[/COLOR][/B])
    For i = 1 To EndRow
        If mArr(i, 10) = "A" Then
            sArr(i, 1) = mArr(i, 11)
        End If
    Next
        Sheet1.Range("M1").Resize(UBound(sArr), 1) = sArr
End Sub
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Thanks chuot0106 :(
Mình bất cẩn thiệt
 
Upvote 0
Thanks chuot0106 :(
Mình bất cẩn thiệt
Khi khai báo mảng 2 chiều bạn cần khai tường minh: Nếu bạn khai báo: " ReDim sArr(1 To EndRow, 1)" Nó sẽ hiểu đây là mảng gồm 2 cột đó là cột 0 và cột 1.

Thanks chuot0106 :(
Mình bất cẩn thiệt
Nếu khai báo mảng như bạn thì có thể sửa như sau:
Mã:
Sub Test()
Dim mArr(), sArr(), i As Long, EndRow As Long
    mArr = Sheet1.Range("A1").CurrentRegion.Value
    EndRow = UBound(mArr, 1)
   ReDim sArr(1 To EndRow, 1)
    For i = 1 To EndRow
        If mArr(i, 10) = "A" Then
            sArr(i, 1) = mArr(i, 11)
        End If
    Next
       Sheets("Sheet1").Range([B][COLOR=#ff0000]"L1"[/COLOR][/B]).Resize(UBound(sArr), [B][COLOR=#ff0000]2[/COLOR][/B]) = sArr
End Sub
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Khi khai báo mảng 2 chiều bạn cần khai tường minh: Nếu bạn khai báo: " ReDim sArr(1 To EndRow, 1)" Nó sẽ hiểu đây là mảng gồm 2 cột đó là cột 0 và cột 1.
Thanks bạn nhiều :D Mình đang tập tành về mãng nên cũng lơ ngơ :D
 
Upvote 0

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

Back
Top Bottom