littlecat1987
Thành viên mới

- Tham gia
- 12/12/10
- Bài viết
- 48
- Được thích
- 0
Nhờ bạn sửa dùm mình code vba, cot_chinh(mã sản phẩm, ô bắt đầu, ô kết thúc)
Mình muốn dựa vào địa chỉ ô bắt đầu, ô kết thúc tạo thành mảng trong function. Báo lỗi vì khai báo là bd,kt là string, nếu mình chuyển thành bd, kt thành range, cũng báo lỗi.
Function COT_CHINH(SP As String, bd As String, kt As String) As String
Dim mact(), ct(), dk As String, I As Long, J As Long, K As String
bd = kt.Address --- lấy địa chỉ của ô
kt = kt.Address --- lấy địa chỉ của ô
mact = Sheet1.Range(bd, kt).Value
With Sheet4
ct = .Range(.[B2], .[G65536].End(3)).Resize(, 6).Value
End With
With CreateObject("scripting.dictionary")
For I = 1 To UBound(mact, 2)
If mact(1, I) <> "" Then
dk = mact(1, I)
For J = 1 To UBound(ct)
If ct(J, 1) = dk And ct(J, 2) = SP And ct(J, 3) = "K" Then
K = "X"
If K <> "" Then
COT_CHINH = K
Exit Function
End If
End If
Next
End If
I = I + 2
Next
End With
COT_CHINH = K
End Function
Cám ơn
Mình muốn dựa vào địa chỉ ô bắt đầu, ô kết thúc tạo thành mảng trong function. Báo lỗi vì khai báo là bd,kt là string, nếu mình chuyển thành bd, kt thành range, cũng báo lỗi.
Function COT_CHINH(SP As String, bd As String, kt As String) As String
Dim mact(), ct(), dk As String, I As Long, J As Long, K As String
bd = kt.Address --- lấy địa chỉ của ô
kt = kt.Address --- lấy địa chỉ của ô
mact = Sheet1.Range(bd, kt).Value
With Sheet4
ct = .Range(.[B2], .[G65536].End(3)).Resize(, 6).Value
End With
With CreateObject("scripting.dictionary")
For I = 1 To UBound(mact, 2)
If mact(1, I) <> "" Then
dk = mact(1, I)
For J = 1 To UBound(ct)
If ct(J, 1) = dk And ct(J, 2) = SP And ct(J, 3) = "K" Then
K = "X"
If K <> "" Then
COT_CHINH = K
Exit Function
End If
End If
Next
End If
I = I + 2
Next
End With
COT_CHINH = K
End Function
Cám ơn
File đính kèm
Lần chỉnh sửa cuối: