Hỏi cách chạy lền lượt sub or function trong 1 worksheet (1 người xem)

  • Thread starter Thread starter haizy
  • Ngày gửi Ngày gửi
Liên hệ QC

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

haizy

Thành viên mới
Tham gia
23/3/14
Bài viết
20
Được thích
2
Nội dung câu hỏi:
Giả sử cháu có 2 sub, function.
1. Dùng để tính tổng các thành phần.
2. Dùng để chuyển số thành chữ từ kết quả đã tính.
Cháu muốn hỏi: Phải xử lý làm sao để sub 1. tính ra kết quả trước rồi.
Rồi từ kết quả sub 1 chính là dữ liệu đầu vào cho function 2 chạy.
- Cháu muốn thực hiện yêu cầu trên VBA.

p/s cháu có mượn file 1 bạn trên GPE để diễn giải
 

File đính kèm

Lần chỉnh sửa cuối:
Nội dung câu hỏi:
Giả sử cháu có 2 sub, function.
1. Dùng để tính tổng các thành phần.
2. Dùng để chuyển số thành chữ từ kết quả đã tính.
Cháu muốn hỏi: Phải xử lý làm sao để sub 1. tính ra kết quả trước rồi.
Rồi từ kết quả sub 1 chính là dữ liệu đầu vào cho function 2 chạy.
- Cháu muốn thực hiện yêu cầu trên VBA.
p/s cháu có mượn file 1 bạn trên GPE để diễn giải
Code trong file sửa lại như sau:
Mã:
Sub TinhTong()
Dim endR&, i&, sotien As Double
Dim Arr()
With Sheet1
  'Xac dong cell cuoi co du lieu o cot C tu dong 65000 - dau'
  endR = .Cells(65000, 3).End(xlUp).Row
  'Gan vao array cot can tinh'
  Arr = .Range("A2:[B][COLOR=#ff0000]E[/COLOR][/B]" & endR).Value
End With
'Dung vong lap' UBound(Arr)= so dong cua arr
For i = UBound(Arr) To 1 Step -1 'duyt tu duoi len
  If Len(Arr(i, 1)) > 0 Then 'ie o nay chua co gi
    Arr(i, 3) = sotien 'gan vao C
    sotien = 0
[B][COLOR=#ff0000]    Arr(i, 5) = DocSo(Arr(i, 3))[/COLOR][/B]
  Else
    sotien = sotien + Arr(i, 3)
  End If
Next i
'gán vào
With Sheet1
  .[A2].Resize(UBound(Arr), [B][COLOR=#ff0000]5[/COLOR][/B]) = Arr
End With
Erase Arr
End Sub
Những chỗ tô đỏ.
 

File đính kèm

Upvote 0
Cháu cảm ơn chú nhiều. Cho cháu hỏi thêm chút, mình có code nào kiểm tra sub 1 đã chạy xong và ra kết quả. Sau đó chạy function 2 không chú.
 
Upvote 0
Cháu cảm ơn chú nhiều. Cho cháu hỏi thêm chút, mình có code nào kiểm tra sub 1 đã chạy xong và ra kết quả. Sau đó chạy function 2 không chú.
Bạn xem code sau có đúng ý bạn không?
[gpecode=vb]
Sub InsFunc()
Dim eR As Long, iR As Long
Call TinhTong 'Chay Sub TinhTong
MsgBox "End Sub 1", vbInformation, "THÔNG BÁO"
eR = Sheet1.[A65535].End(3).Row 'xac dinh dong cuoi cot A
For iR = 2 To eR 'Chay vong lap tu 2 den dong cuoi cot A
If Len(Sheet1.Cells(iR, 1)) Then 'neu cot A co du lieu
'chan cong thuc voi ham DocSo
Sheet1.Cells(iR, 5).Formula = "=DocSo(R" & iR & "C3)"
End If
Next iR
MsgBox "End Sub 2", vbInformation, "THÔNG BÁO"
End Sub

[/gpecode]
 

File đính kèm

Upvote 0

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

Back
Top Bottom