Dương Thị Kim Thoa
Dương Thị Kim Thoa
Thảo luận 4 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 284 lượt xem

Da trong Chương 11 Vòng Lặp có bài tập bên dưới nhưng em chỉ thực hiện

Da Chào Thầy trong Chương 11: Vòng Lặp có bài tập bên dưới, nhưng em chỉ thực hiện được yêu cầu dùng vòng lặp For, còn vòng lặp For Each thì kết quả lại ra sai, nhờ Thầy xem giúp em đoạn code bị sai chỗ nào ạ

Sub ForEach_Next()

    'Gan bien doi tuong

    Dim MucGia, SoLuong As Range

        Set MucGia = Sheets(1).Range("A9:A13")

        Set SoLuong = Sheets(1).Range("B9:B13")

    'Gan bien phan tu

    Dim a, b As Object

        For Each a In MucGia

        For Each b In SoLuong

            'Tinh Doanh Thu

            Dim DoanhThu As Long

                DoanhThu = a.Value * b.Value

            'Tinh Chi Phi

            Dim ChiPhi As Long

                ChiPhi = b.Value * Range("D2").Value + Range("D1").Value

            'Tinh Loi Nhuan

            Dim LoiNhuan As Long

                LoiNhuan = DoanhThu - ChiPhi

                a.Offset(0, 2).Value = LoiNhuan

        Next a, b

    MsgBox "Hoan Thanh"

End Sub


Thảo luận 4 câu trả lời
Lượt xem 284 lượt xem
Vỗ tay vỗ tay
Dương Thị Kim Thoa 09:10 - Oct 17, 2020

Chào bạn bạn xem lại vòng lặp foreach trong tài liệu vba có cách viết bạn nhé.

code mẫu khi sử dụng for each

Sub
Thuong_BP_KinhDoanh()

    Dim
BoPhan as
Range

      
Set
BoPhan

Worksheets("10").Range("F16:F22")

    Dim i as Range

    For Each i
in
BoPhan

        If
i.Value
= Range("I16").Value
Then

            i.Offset(0,
1).Value = Range("J16").Value

        End If

   
Next

i

End
Sub

Vỗ tay vỗ tay
Dương Thị Kim Thoa 13:10 - Oct 17, 2020

Da bài tập Thưởng Kinh doanh này em đã hiểu rõ và làm được rồi ạ. Nhưng đó chỉ có 1 phần tử i thay đổi trong đối tượng BoPhan thôi ạ, còn bài tập trong chương bài giảng thì có đến 2 đối tượng MucGia va Soluong thay đổi nên nhờ Thầy sửa giúp em code For each cho bài tập này ạ. Em cám ơn

Vỗ tay vỗ tay
Dương Thị Kim Thoa 08:10 - Oct 19, 2020

vòng lặp bạn dùng ở trên chưa đúng. Ở đoạn:

        For Each a In MucGia

        For Each b In SoLuong

không dùng đồng thời 2 lệnh vòng lặp như thế này. Cách này chỉ dùng với vòng lặp lồng nhau thôi.

Ở đây bạn chỉ cần 1 vòng lặp, trong đó b sẽ là a.offset(0,1) chứ không cần tới vòng lặp cho b

Do cách viết 2 lệnh vòng lặp ở trên, mà ở dưới bạn lại chỉ có 1 dòng Next a, b nên không đúng cú pháp. Nếu là vòng lặp lồng ghép thì phải 1 dòng next a, 1 dòng next b riêng

Vỗ tay vỗ tay
Dương Thị Kim Thoa 14:10 - Oct 19, 2020

Da em đã làm được rồi, cám ơn Thầy và Trung tâm đã hướng dẫn ạ

Vỗ tay vỗ tay
Câu hỏi liên quan
@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội