Phạm Phúc Thịnh
Phạm Phúc Thịnh
Thảo luận 12 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 229 lượt xem

Trong bài tập thực hành ứng dụng vòng lặp For và For each tính lợi nhuận

Trong bài tập thực hành ứng dụng vòng lặp For và For each, tính lợi nhuận dựa theo doanh thu và chi phí. Em thử viết code theo vòng lặp For each, khi chạy thì VBA ko báo lỗi gì nhưng không hiểu sao lại không ra kết quả gì cả. Em gửi code để Thầy check giúp em! Em cảm ơn ạ!

Sub tinh_loi_nhuan_2()
'von ban dau 2000 (o D1)
'chi phi bien doi theo moi san pham 40 (o D2)
'Doanh thu = so luong * Don gia ban
'Chi phi = so luong * CP bien doi * Von ban dau
'Loi nhuan = doanh thu - chi phi

Dim mucgia As Range
Set mucgia = Sheet1.Range("A9:A13")
Dim doanhthu As Long
Dim chiphi As Long

Dim i As Range
For Each i In mucgia
chiphi = Sheet1.Range("B" & i).Value * Sheet1.Range("D2") + Sheet1.Range("D1").Value
doanhthu = Sheet1.Range("B" & i).Value * Sheet1.Range("A" & i).Value
Sheet1.Range("C" & i).Value = doanhthu - chiphi
Next i

End Sub
Thảo luận 12 câu trả lời
Lượt xem 229 lượt xem
Vỗ tay vỗ tay
Tuấn Ba [Chuyên gia] 10:06 - Jun 05, 2020
chào bạn bạn vui lòng đẩy cả file của mình lên nhé.
Vỗ tay vỗ tay
Dương Mạnh Quân [Chuyên gia] 13:06 - Jun 05, 2020
Lỗi ở đây là bạn đang xét i là 1 range, nhưng lại sử dụng i như 1 giá trị thể hiện số dòng.
Như vậy bạn dùng biến i chưa đúng.
Sheet1.Range("B" & i) thực ra chính là i nhưng offset đi 1 cột (i nằm trong cột A, nên khi xét sang cột B thì offset 1 cột)
Bạn chú ý đoạn này:
Dim i As Range
For Each i In mucgia
chiphi = i.offset(0,1).Value * Sheet1.Range("D2") + Sheet1.Range("D1").Value
doanhthu = i.offset(0,1).value * i.Value
i.offset(0, 2).value = doanhthu - chiphi
Next i
Vỗ tay vỗ tay
Phạm Phúc Thịnh 16:06 - Jun 05, 2020
Dạ được rồi ạ! Em cảm ơn Thầy!
Vỗ tay vỗ tay
Trần Thị Mỹ Dung 22:08 - Aug 18, 2020

Thầy Cô và các bạn cho em hỏi code bên dưới em bị sai chỗ nào ạ? Em cảm ơn Thầy/Cô và các ban. Mong Thầy Co và các bạn hướng dẫn thêm:


Sub BTFor()

Dim Doanhso As Long

Dim ChiPhi As Long

Dim LoiNhuan As Long

Dim i As Integer

For i = 1 To 5

Set Doanhso = Sheets("1").Range("D" & i + 8).Value

Set ChiPhi = Sheets("1").Range("E" & i + 8).Value

Set LoiNhuan = Sheets("1").Range("C" & i + 8).Value

Doanhso = [Sheets("1").Range("B" & i + 8).Value] * [Sheets("1").Range("A" & i + 8).Value]

ChiPhi = [Sheets("1").Range("B" & i + 8).Value] * [Sheets("1").Range("D1").Value] * [Sheets("1").Range("D2").Value]

LoiNhuan = Doanhso - ChiPhi

Next i

End Sub

Vỗ tay vỗ tay
Tuấn Ba [Chuyên gia] 08:08 - Aug 19, 2020
Chào bạn bạn đẩy file lên cho dễ bạn nhé.
Vỗ tay vỗ tay
Dương Mạnh Quân [Chuyên gia] 09:08 - Aug 19, 2020

Sai chỗ này:

Doanhso = [Sheets("1").Range("B" & i + 8).Value] * [Sheets("1").Range("A" & i + 8).Value]

ChiPhi = [Sheets("1").Range("B" & i + 8).Value] * [Sheets("1").Range("D1").Value] * [Sheets("1").Range("D2").Value]

Bạn bỏ các dấu ngoặc vuông đi. Việc sử dụng dấu ngoặc vuông như vậy chưa đúng. Nếu cần dùng ngoặc thì dùng ngoặc thường (   )

Vỗ tay vỗ tay
Trần Thị Mỹ Dung 21:08 - Aug 19, 2020

https://drive.google.com/file/d/1UWL2...

Thầy xem giúp em thắc mắc ở trên

Vỗ tay vỗ tay
Trần Thị Mỹ Dung 21:08 - Aug 19, 2020

Em tự fix được rồi, các ơn  Thầy Cô và các Anh/Chị ạ


Dim ChiPhi As String

Dim LoiNhuan As String

Dim i As Integer

For i = 1 To 5

 Doanhso = Sheet1.Range("B" & i + 8).Value * Sheet1.Range("A" & i + 8).Value

 Sheet1.Range("D" & i + 8).Value = Doanhso

 

 ChiPhi = Sheet1.Range("B" & i + 8).Value * Sheet1.Range("D1").Value * Sheet1.Range("D2").Value

 Sheet1.Range("E" & i + 8).Value = ChiPhi

 

 LoiNhuan = Doanhso - ChiPhi

 Sheet1.Range("C" & i + 8).Value = LoiNhuan

Next i

End Sub


Vỗ tay vỗ tay
Phụg Quoc Tung 14:06 - Jun 07, 2021

Thầy ơi !

Sao làm hết mà vào vào phần Inport không hiển thị file Excel làm sao Thầy

Vỗ tay vỗ tay
Dương Mạnh Quân [Chuyên gia] 14:06 - Jun 07, 2021

@Quoc Tung: bạn có thể nói rõ hơn bạn đang làm nội dung gì không? Với câu hỏi của bạn mình chưa hình dung được vấn đề nên chưa hỗ trợ bạn được.

Vỗ tay vỗ tay
Tuấn Ba [Chuyên gia] 14:06 - Jun 07, 2021

Chào bạn Phụg Quoc Tung bạn có thể mô tả rõ hơn lỗi của bạn được không?

Vỗ tay vỗ tay
Phụg Quoc Tung 14:06 - Jun 08, 2021


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