Nhờ sửa code cộng bị báo lỗi Expected array

Liên hệ QC

Son-Thuy

Thành viên chính thức
Tham gia
15/8/19
Bài viết
65
Được thích
5
Nhờ các bạn sửa lại code cộng như sau:
Nếu M4 khác không thì O4=M4+N4, rồi tiếp tục các ô dưới
Tôi có viết code như sau
Mã:
Sub Cong()
    Dim Arr As Range, i As Long, n As Long
    Arr = Range([M4], [O65536].End(xlUp))
    For i = 1 To UBound(Arr)
        If Arr(i, 1) <> "" Then
            Arr(i, 3) = Arr(i, 1) + Arr(i, 2)
        End If
    Next
End Sub
Nhưng code bị báo lỗi Expected array
Lưu ý: tôi muốn thể hiện công thức như ở cột O
Nhờ các bạn chỉnh sửa giúp. Xin cảm ơn.
 

File đính kèm

  • Cong.xlsm
    19.7 KB · Đọc: 6
Lỗi quá nhiều, chưa biết phân biệt range với array, chưa biết khai báo biến.

.
 
Lần chỉnh sửa cuối:
Upvote 0
@Son-Thuy
Nhờ các bạn sửa lại code cộng như sau:
Nếu M4 khác không thì O4=M4+N4, rồi tiếp tục các ô dưới
Tôi có viết code như sau
Mã:
Sub Cong()
    Dim Arr As Range, i As Long, n As Long
    Arr = Range([M4], [O65536].End(xlUp))
    For i = 1 To UBound(Arr)
        If Arr(i, 1) <> "" Then
            Arr(i, 3) = Arr(i, 1) + Arr(i, 2)
        End If
    Next
End Sub
Nhưng code bị báo lỗi Expected array
Lưu ý: tôi muốn thể hiện công thức như ở cột O
Nhờ các bạn chỉnh sửa giúp. Xin cảm ơn.

do Arr khai báo kiểu Range nên phải viết như thế này:
1, Arr = Range([M4], [O65536].End(xlUp)) phải là Set Arr = Range([M4], [O65536].End(xlUp))
2, ubound(arr) chỉ dùng cho Arr là kiểu mảng, không dùng cho Range, bạn phải viết là Arr.rows.count
 
Upvote 0
Tập viết rõ ràng (tường minh), kiểu viết tắt này không ổn.


.
tôi có sửa lại thành
Mã:
Arr = Sheet2.Range([M4], [O65536].End(xlUp))
nhưng vẫn báo lỗi
nhờ bạn sửa giúp
Bài đã được tự động gộp:

@Son-Thuy


do Arr khai báo kiểu Range nên phải viết như thế này:
1, Arr = Range([M4], [O65536].End(xlUp)) phải là Set Arr = Range([M4], [O65536].End(xlUp))
2, ubound(arr) chỉ dùng cho Arr là kiểu mảng, không dùng cho Range, bạn phải viết là Arr.rows.count
Bạn có thể sửa để tôi học được không? Cảm ơn bạn
 
Upvote 0
Có 2 cách viết:

1. Code hoạt động trên Range.


PHP:
Sub Cong_Range()
    Dim i As Long, LastRow As Long
    LastRow = Range("M" & Rows.Count).End(xlUp).Row
    For i = 4 To LastRow
        If Range("M" & i).Value <> "" Then
            Range("O" & i).Value = Range("M" & i).Value + Range("N" & i).Value
        End If
    Next
End Sub

2. Code hoạt động trên Array.


PHP:
Sub Cong_Array()
Dim Arr , i As Long, LastRow As Long
LastRow = Range("M" & Rows.Count).End(xlUp).Row
   Arr = Range("M4:O" & LastRow).Value
    For i = 1 To UBound(Arr)
        If Arr(i, 1) <> "" Then
            Arr(i, 3) = Arr(i, 1) + Arr(i, 2)
        End If
    Next
    Range("M4").Resize(UBound(Arr), 3) = Arr
End Sub
 
Upvote 0
@Son-Thuy
Mã:
Sub Cong()
    Dim Arr As Range, i As Long, n As Long
    Set Arr = Range([M4], [O65536].End(xlUp))
    For i = 1 To Arr.Rows.Count
        If Arr(i, 1) <> "" Then
            Arr(i, 3) = Arr(i, 1) + Arr(i, 2)
        End If
    Next
End Sub

Đây nhé bạn, bài #3 mình đã ghi rõ là cần sử những chỗ nào rồi mà
 
Upvote 0
Có 2 cách viết:

1. Code hoạt động trên Range.


PHP:
Sub Cong_Range()
    Dim i As Long, LastRow As Long
    LastRow = Range("M" & Rows.Count).End(xlUp).Row
    For i = 4 To LastRow
        If Range("M" & i).Value <> "" Then
            Range("O" & i).Value = Range("M" & i).Value + Range("N" & i).Value
        End If
    Next
End Sub

2. Code hoạt động trên Array.


PHP:
Sub Cong_Array()
Dim Arr , i As Long, LastRow As Long
LastRow = Range("M" & Rows.Count).End(xlUp).Row
   Arr = Range("M4:O" & LastRow).Value
    For i = 1 To UBound(Arr)
        If Arr(i, 1) <> "" Then
            Arr(i, 3) = Arr(i, 1) + Arr(i, 2)
        End If
    Next
    Range("M4").Resize(UBound(Arr), 3) = Arr
End Sub
1/Code Sub Cong_Range, chạy chưa đúng yêu cầu là O4=M4+N4 ... không muốn ra kết quả giống như paste value
Nhờ bạn sửa giùm code này

2/Code Sub Cong_Array thì vẫn bị báo lổi như hình
Cảm ơn bạn!
Bài đã được tự động gộp:

@Son-Thuy
Mã:
Sub Cong()
    Dim Arr As Range, i As Long, n As Long
    Set Arr = Range([M4], [O65536].End(xlUp))
    For i = 1 To Arr.Rows.Count
        If Arr(i, 1) <> "" Then
            Arr(i, 3) = Arr(i, 1) + Arr(i, 2)
        End If
    Next
End Sub

Đây nhé bạn, bài #3 mình đã ghi rõ là cần sử những chỗ nào rồi mà
Kết quả ở cột O là dạng paste value
Làm sao sửa nó là dạng công thức như O4=M4+N4 được không bạn
Cảm ơn bạn
 

File đính kèm

  • LLoi.png
    LLoi.png
    19.7 KB · Đọc: 6
Upvote 0
1/Code Sub Cong_Range, chạy chưa đúng yêu cầu là O4=M4+N4 ... không muốn ra kết quả giống như paste value
Nhờ bạn sửa giùm code này

2/Code Sub Cong_Array thì vẫn bị báo lổi như hình
Cảm ơn bạn!
Bài đã được tự động gộp:


Kết quả ở cột O là dạng paste value
Làm sao sửa nó là dạng công thức như O4=M4+N4 được không bạn
Cảm ơn bạn
Code#5 bị sai gì vậy bạn? mình thấy code chạy đúng kết quả mà.
 
Upvote 0
Làm sao sửa nó là dạng công thức như O4=M4+N4 được không bạn
Sửa code1 của anh Phuocam thành:
Mã:
Sub Cong_Range()
    Dim i As Long, LastRow As Long
    LastRow = Range("M" & Rows.Count).End(xlUp).Row
    For i = 4 To LastRow
        If Range("M" & i).Value <> "" Then
            Range("O" & i).Value = "=M" & i & "+N" & i
        End If
    Next
End Sub
 
Upvote 0
Code#5 bị sai gì vậy bạn? mình thấy code chạy đúng kết quả mà.
Code bài 5 có 2 code

code số 1 thì chạy đúng nhưng chưa phù hợp với đề bài là cột O muốn thể hiện ra công thức như : O4=M4+N4

code 2 thì tôi chạy thì nó báo lỗi như bài 7 (không hiểu tại sao)
 
Upvote 0
Vẫn không hiểu tại sao bạn chủ bài lại viết code để cộng xong ô đó lại gán công thức vào. Sao không viết công thức ngay từ đầu?
 
Upvote 0
Web KT

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

Back
Top Bottom