Hoàng Nhật Phương
Thành viên gắn bó
- Tham gia
- 5/11/15
- Bài viết
- 1,894
- Được thích
- 1,214
Con chào Bác Siwtom,Tôi không xem sub LocKetQua và SumTongCong đâu nhé. Nhưng trong LocKetQua ít nhất phải có ByVal sFile As String
Đầu năm con kính chúc Bác cùng gia đình Vạn sự như ý, An khang thịnh vượng ạ.
Ở bài này con vẫn còn mơ hồ một chút nữa giưã ByVal/ByRef , Bác chỉ chon hiểu thêm với ạ:
Nếu code:
Mã:
...
Dim sKey As String
...
For ik = 0 To dFile.Count - 1
sKey = dFile.Keys()(ik)
Call LocKetQua(sKey, Book, shtM12, lr, shtMau)
Next ik
...
Như vậy sFile không có ByVal ở đầu (theo con hiểu mặc định sẽ là ByRef nếu không khai báo ByVal/ByRef ở đầu) code không báo lỗi.
Nhưng khi chuyển như sau:
Mã:
...
Dim sKey
...
For Each sKey In dFile.Keys
Call LocKetQua(sKey, Book, shtM12, lr, shtMau)
Next sKey
...
Sub LocKetQua(ByVal sFile As String,...) sFile phải khai báo ByVal ở đầu như Bác chỉ ở trên.
Phải chăng là khi sử dụng sKey không còn là kiểu String ( giống với sFile As String) nữa mà do thay sang kiểu Variant, nếu đúng như vậy: ByVal sFile As String sẽ vẫn giữ được giá trị truyền vào nhưng khác với ByRef là nó sẽ đổi được kiểu khai báo của tham số truyền vào từ Variant sang String phải không ạ?
Lần chỉnh sửa cuối: