THắc mắc code không chạy được! để tạo sổ Phải thu (1 người xem)

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

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

ninhmoon

Thành viên tiêu biểu
Tham gia
3/3/14
Bài viết
525
Được thích
48
Dear All!
Em có chỉnh sửa lại đoạn code bên dưới nhưng không biết sai chỗ nào mà nó ko báo là sai gì cả
Và cũng không thấy hoạt động như ý mình mong muốn là vì sao?
Nhờ các bác chỉ giáo?
Em đang làm sổ ngân hàng và sổ phải thu để theo dõi chi tiết những khoảng tiền về cho từng khách hàng.
Em gửi file đính kèm:
Trong file có sheets 1122NKC và GiathanhSX từ hai sheets đó Em đang tính và dự định lọc sang sheets CT131. Để theo dõi số dư của từng khách hàng?
[GPECODE=vb]
'tach' khai bao' bien' de? dung` chung cac Sub
Dim tendoituong As String, FromThang As Integer, ToThang As Integer


Sub LocTkco()
With ActiveSheet '<=> CT131
'check cac dieu kien
If .CT131cbo_from.Value = Empty Or _
.CT131cbo_from.Value = Empty Or .ct131cbo_to.Value = Empty Then
MsgBox ("Ban chua dien ten doi' tuong va thang' can` loc"), vbExclamation, "Thông báo"
Exit Sub
ElseIf .CT131cbo_from.Value > .ct131cbo_to Then
MsgBox ("Thang' ke^ khai: Tu` thang' den' thang' chua hop ly'"), vbExclamation
Exit Sub
Else
tendoituong = .ct131cbo_tendoituong.Value
FromThang = .CT131cbo_from.Value
ToThang = .ct131cbo_to.Value
End If
End With


Application.ScreenUpdating = False

Call Loc_GiathanhSX
Call Loc_1122NKC
Application.ScreenUpdating = True

End Sub




Sub Loc_GiathanhSX()
Dim vung1(), dArr(), i As Long, K As Long 'ko the tach' i, K len tren de dung` chung


vung1 = Range("tbl_GiathanhSX").Value 'khi dung` Table -> ko can show all row.

ReDim dArr(1 To UBound(vung1, 1), 1 To 16) 'xac dinh kich thuoc mang

For i = 1 To UBound(vung1, 1)
If UCase(vung1(i, 6)) = UCase(tendoituong) Then
If vung1(i, 1) >= FromThang And vung1(i, 1) <= ToThang Then
If vung1(i, 8) = 131 Then
K = K + 1

dArr(K, 1) = vung1(i, 1) 'Moth declara
dArr(K, 5) = vung1(i, 3) 'So HD
dArr(K, 6) = vung1(i, 4) 'Ngay thang
dArr(K, 7) = vung1(i, 7) 'Ma Hang
dArr(K, 8) = vung1(i, 9) 'TK No131
dArr(K, 9) = vung1(i, 10) 'TKco5113
dArr(K, 10) = vung1(i, 11) 'So luong
dArr(K, 11) = vung1(i, 12) 'DonGia ban VND
dArr(K, 12) = vung1(i, 13) 'DonGia ban USD
dArr(K, 13) = vung1(i, 14) 'Tonggiathanh VND
dArr(K, 14) = vung1(i, 15) 'Tonggiathanh USD
'dArr(K, 11) = vung1(i, 12) 'Amount
dArr(K, 16) = "=R[-1]C+RC[-2]-RC[-1]" 'Balance
End If
End If
End If
Next i

If K Then
With ThisWorkbook.Sheets("CT131")
.[B13].Resize(P, 16) = dArr
End With

Erase dArr
End If
End Sub


Sub Loc_1122NKC()
Dim vung2(), dArr(), i As Long, K As Long


vung2 = Range("tbl_1122NKC").Value

ReDim dArr(1 To UBound(vung2, 1), 1 To 13) 'xac dinh kich thuoc mang

For i = 1 To UBound(vung2, 1)
If UCase(vung2(i, 6)) = UCase(tendoituong) Then
If vung2(i, 1) >= FromThang And vung2(i, 1) <= ToThang Then
If vung2(i, 7) = 131 Or vung2(i, 8) = 131 Then
K = K + 1

dArr(K, 1) = vung2(i, 1) 'month ke khai

dArr(K, 2) = vung2(i, 2) 'Ten ngan hang

dArr(K, 3) = vung2(i, 4) 'ngay thang chung tu ngan hang

dArr(K, 7) = vung2(i, 5) 'Dien gian

dArr(K, 8) = vung2(i, 7) 'Tai khoan No131

dArr(K, 9) = vung2(i, 8) 'Tk Co tk131

'dArr(K, 9) = vung2(i, 8) 'TK co

If vung2(i, 8) = 131 Then
dArr(K, 15) = vung2(i, 9) 'Paid
' Else
' dArr(K, 12) = vung2(i, 9) 'Paid
End If

dArr(K, 16) = "=R[-1]C+RC[-2]-RC[-1]" 'Balance

'dArr(K, 5) = vung2(i, 5) 'so HD

'dArr(K, 8) = vung2(i, 9) 'N

'dArr(K, 10) = vung2(i, 11) 'C

End If
End If
End If
Next i

If K Then
'ua? nho' lan` truoc co' chinh? o? day roi` ma` he`
With ThisWorkbook.Sheets("CT131")
'If .Range("A7") <> "" Then
If .Range("Q15") <> "" Then 'luon luon co' (19-6)
.Range("A65536").End(xlUp).Offset(1).Resize(K, 16) = dArr
Else
.[B15].Resize(K, 16) = dArr
End If
End With

Erase dArr
End If
End Sub



[/GPECODE]
 

File đính kèm

Em có chỉnh sửa lại đoạn code bên dưới nhưng không biết sai chỗ nào mà nó ko báo là sai gì cả
Và cũng không thấy hoạt động như ý mình mong muốn là vì sao?
Nhờ các bác chỉ giáo?

Vậy code có báo lỗi dòng nào không? nếu có thì ở dòng nào?

Nếu chạy được, thì sai là sai cái gì so với kết quả mong muốn của bạn?

Cần làm rõ các điều đó.
 
Upvote 0
Vậy code có báo lỗi dòng nào không? nếu có thì ở dòng nào?

Nếu chạy được, thì sai là sai cái gì so với kết quả mong muốn của bạn?

Cần làm rõ các điều đó.
1. Code không báo lỗi gì cả! -> Nên NM không biết sai cái gì?
2. Có nhấn F5 để chạy code: nhưng không thấy hoạt động gì khác.
 
Upvote 0
1. Code không báo lỗi gì cả! -> Nên NM không biết sai cái gì?
2. Có nhấn F5 để chạy code: nhưng không thấy hoạt động gì khác.

1)
Sub Loc_GiathanhSX()

thì 2 dòng sau SAI NHÉ

*
Phải là cột 9
PHP:
 If vung1(i, 9) = 131 Then

* và dòng gần cuối
With ThisWorkbook.Sheets("CT131")
.[B13].Resize(P, 16) = dArr
End With
phải sửa P thành K
PHP:
With ThisWorkbook.Sheets("CT131")            
     .[B13].Resize(K, 16) = dArr
End With

2) Phải nên có Lệnh xoá vùng kết quả cũ ở sheet 131 trước khi ghi kết quả mới xuống

3)... bạn thử và kiểm tra tiếp,
 
Lần chỉnh sửa cuối:
Upvote 0
1)
Sub Loc_GiathanhSX()

thì 2 dòng sau SAI NHÉ

*
Phải là cột 9
PHP:
 If vung1(i, 9) = 131 Then

* và dòng gần cuối

phải sửa P thành K
PHP:
With ThisWorkbook.Sheets("CT131")            
     .[B13].Resize(K, 16) = dArr
End With

2) Phải nên có Lệnh xoá vùng kết quả cũ ở sheet 131 trước khi ghi kết quả mới xuống

3)... bạn thử và kiểm tra tiếp,

Cảm ơn bạn nhé. Lúc mình insert thêm cột Mã tắt quên không chỉnh lại.
Thanks nhiều.}}}}}
Đề mình làm tiếp có gì hỏi tiếp bạn.
 
Upvote 0
1)


2) Phải nên có Lệnh xoá vùng kết quả cũ ở sheet 131 trước khi ghi kết quả mới xuống

3)... bạn thử và kiểm tra tiếp,
2/ Xóa vùng kết quả cũ tại sheet CT131 em đã làm được
3. Nhưng mà tại sub Loc_1122NKC() mình cũng ko tìm ra chỗ sai!
Bạn xem hộ mình tại sub Loc_1122NKC có gì sai sót ko và cách kiểm tra sai sót như thế nào?
 
Upvote 0
Em gửi lại file nhé?
Đang bị mắc một lỗi tại sheet lọc CT131


[GPECODE=vb]
If vung2(i, 8) = 131 Then
dArr(K, 15) = vung2(i, 9)



[/GPECODE]
 

File đính kèm

Upvote 0
Em gửi lại file nhé?
Đang bị mắc một lỗi tại sheet lọc CT131


[GPECODE=vb]
If vung2(i, 8) = 131 Then
dArr(K, 15) = vung2(i, 9)



[/GPECODE]
ReDim dArr(1 To UBound(vung2, 1), 1 To 13) 'xac dinh kich thuoc mang
cái này bạn khai 13 cột mà sử dụng dArr(K, 15) là sao ta?
 
Upvote 0
ReDim dArr(1 To UBound(vung2, 1), 1 To 13) 'xac dinh kich thuoc mang
cái này bạn khai 13 cột mà sử dụng dArr(K, 15) là sao ta?
Thanks anh. Hehe.
QUên không sửa chỗ đó.
Một vấn đề nữa em muốn hỏi là làm sao bỏ được cái khoản trắng khi lọc sheets Giathanhsanxuat tới sheets lọc 1122NKC
 
Upvote 0
[GPECODE=vb]


With ThisWorkbook.Sheets("CT131")
'If .Range("A7") <> "" Then
If .Range("P15") <> "" Then 'luon luon co' (19-6)
.Range("B65536").End(xlUp).Offset(1).Resize(K, 16) = dArr
[/GPECODE]
Em có sửa đoạn này nhưng mà thấy chạy nó ko được đẹp. Nếu chạy hết phần thanh toán xuống bên dưới thì em thấy đẹp hơn làm thế nào để chạy xuống bên dưới ah!
 
Upvote 0
Sub Loc_GiathanhSX()
Dim vung1(), dArr(), i As Long, K As Long 'ko the tach' i, K len tren de dung` chung

vung1 = Range("tbl_GiathanhSX").Value 'khi dung` Table -> ko can show all row.
ReDim dArr(1 To UBound(vung1, 1), 1 To 16) 'xac dinh kich thuoc mang

For i = 1 To UBound(vung1, 1)
If UCase(vung1(i, 6)) = UCase(tendoituong) Then
If vung1(i, 1) >= FromThang And vung1(i, 1) <= ToThang Then
If vung1(i, 8) = 131 Then
K = K + 1

dArr(K, 1) = vung1(i, 1) 'Moth declara
dArr(K, 5) = vung1(i, 3) 'So HD
dArr(K, 6) = vung1(i, 4) 'Ngay thang
dArr(K, 7) = vung1(i, 7) 'Ma Hang
dArr(K, 8) = vung1(i, 9) 'TK No131
dArr(K, 9) = vung1(i, 10) 'TKco5113
dArr(K, 10) = vung1(i, 11) 'So luong
dArr(K, 11) = vung1(i, 12) 'DonGia ban VND
dArr(K, 12) = vung1(i, 13) 'DonGia ban USD
dArr(K, 13) = vung1(i, 14) 'Tonggiathanh VND
dArr(K, 14) = vung1(i, 15) 'Tonggiathanh USD
'dArr(K, 11) = vung1(i, 12) 'Amount
dArr(K, 16) = "=R[-1]C+RC[-2]-RC[-1]" 'Balance
End If
End If
End If
Next i
If K Then
With ThisWorkbook.Sheets("CT131")
.[B13].Resize(P, 16) = dArr
End With

Erase dArr
End If
End Sub
[/GPECODE]
bạn có thể gộp vòng lặp if như : If ...And ...And...And...And... Then... End If cho đỡ hoa mắt
vòng lặp for : for ... dArr(k,cot)=vung1(i,cot+1)...next thay cho đoạn
"dArr(K, 11) = vung1(i, 12) 'DonGia ban VND
dArr(K, 12) = vung1(i, 13) 'DonGia ban USD
dArr(K, 13) = vung1(i, 14) 'Tonggiathanh VND
dArr(K, 14) = vung1(i, 15) 'Tonggiathanh USD"

Tốt nhất bạn nên nói rõ yêu cầu của bạn tại các cột trong Sheets("CT131") là bạn cần lấy cái gì? lấy ở đâu? điều kiện ntn?
 
Upvote 0

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

Back
Top Bottom