Mình phải nói là cảm ơn cảm ơn bạn rất nhiều. Nhưng còn vấn đề chỉ hiện tự ẩn , hiện các dòng có vật tư theo phiếu mà không phải dùng nút Hide và Unhide nữa. bạn giúp mình tiếp nha. À còn vấn đề nữa, bạn viết code dùm mình chỗ Số TT với Họ tên người giao hàng, địa chỉ dưới dòng Họ tên người giao hàng nhé. Số lượng theo chứng từ không hiển thị( số lượng theo chứng từ chính bằng số lượng thực nhập ). Cảm ơn bạn rất nhiều
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [h4]) Is Nothing Then
Dim Sh As Worksheet, Rng As Range, sRng As Range
Dim MyAdd As String, Rws As Long
Rws = [A99].End(xlUp).Row
1 [B13:B37].EntireRow.Hidden = False '<=|'
[B13].Resize(Rws, 7).ClearContents
Set Sh = Worksheets("Nhap")
Set Rng = Sh.Range(Sh.[c4], Sh.[c65500].End(xlUp))
Set sRng = Rng.Find([h4].Value, , xlFormulas, xlWhole)
If Not sRng Is Nothing Then
MyAdd = sRng.Address
Do
With [B99].End(xlUp).Offset(1)
.Resize(, 3).Value = sRng.Offset(, 2).Resize(, 3).Value
.Offset(, 4).Resize(, 3).Value = sRng.Offset(, 5).Resize(, 3).Value
2 .Offset(, 3).Value = .Offset(, 4).Value '<=|'
End With
[d5].Value = sRng.Offset(, 1).Value
Set sRng = Rng.FindNext(sRng)
Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
End If
3 Rws = [b37].End(xlUp).Row + 0 '<=|'
Rws = Switch(Rws < 16, 18, Rws < 18, 20, Rws > 17, Rws + 3)
5 Range("B" & Rws & ":B37").EntireRow.Hidden = True '<=|'
End If
End Sub
Họ tên & địa chì người giao hàng chưa rõ nơi mô để lấy sất! Đành tiếp tục giao việc đó cho bạn vậy!
Bạn có thể chỉ cho mình đoạn code lấy ngày tháng được không? Loay hoay mãi mà không làm được code cho số thứ tự, tên người nhập và đơn vị nhập. Tiện thể bạn có thể giải thích các câu lệnh của bạn cho mình được không. Cảm ơn bạn.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [h4]) Is Nothing Then
Dim Sh As Worksheet, Rng As Range, sRng As Range
Dim MyAdd As String, Rws As Long
Rws = [A99].End(xlUp).Row
1 [B13:B37].EntireRow.Hidden = False '<=|'
[B13].Resize(Rws, 7).ClearContents
Set Sh = Worksheets("Nhap")
Set Rng = Sh.Range(Sh.[c4], Sh.[c65500].End(xlUp))
Set sRng = Rng.Find([h4].Value, , xlFormulas, xlWhole)
If Not sRng Is Nothing Then
MyAdd = sRng.Address
Do
With [B99].End(xlUp).Offset(1)
.Resize(, 3).Value = sRng.Offset(, 2).Resize(, 3).Value
.Offset(, 4).Resize(, 3).Value = sRng.Offset(, 5).Resize(, 3).Value
2 .Offset(, 3).Value = .Offset(, 4).Value '<=|'
End With
[d5].Value = sRng.Offset(, 1).Value
Set sRng = Rng.FindNext(sRng)
Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
End If
3 Rws = [b37].End(xlUp).Row + 0 '<=|'
Rws = Switch(Rws < 16, 18, Rws < 18, 20, Rws > 17, Rws + 3)
5 Range("B" & Rws & ":B37").EntireRow.Hidden = True '<=|'
End If
End Sub
(2) Bạn có thể chỉ cho mình đoạn code lấy ngày tháng được không? Loay hoay mãi mà không làm được code cho số thứ tự, tên người nhập và đơn vị nhập. (1)bạn có thể giải thích các câu lệnh cho mình được không.
Cảm ơn bạn đã giải thích chi tiết các dòng lệnh cho mình. Mình đã làm được bên PXUAT rồi. Nếu bạn có thời gian bạn có thể viết hộ mình code trong sheet CDNXT được không. Ở các cột nhập trong kỳ, xuất trong kỳ nhìn công thức nó rối mắt quá. Hì mình nhờ vả bạn nhiều quá, ngại thật :d
Option Explicit
Sub TonCuoiKy()
Dim jJ As Byte, ShName As String: Const Col As Byte = 5
Dim Cls As Range, Rng As Range, WF As Object, Sh As Worksheet
Set WF = Application.WorksheetFunction: Sheets("CDNXT").Select
For Each Cls In Range([D7], [D65500].End(xlUp))
For jJ = 1 To 2
ShName = Choose(jJ, "Nhap", "Xuat"): Set Sh = Sheets(ShName)
Set Rng = Sh.Range(Sh.[G6], Sh.[G65500].End(xlUp))
Cells(Cls.Row, Col + 2 * jJ).Value = WF.SumIf(Rng, Cls.Value, Rng.Offset(, 1))
Cells(Cls.Row, 1 + Col + 2 * jJ).Value = WF.SumIf(Rng, Cls.Value, Rng.Offset(, 3))
Next jJ
Next Cls
End Sub
Những điều nên làm trước khi chạy macro:
(*) Xóa 1 dòng dư ở 'Xuat' so với 'Nhap'
(*) Sau khi Copy macro vô CS VBE, ta tiến hành gán cho nó 1 tổ hợp fím nóng, như {CTRL}+{SHIFT}+T
Mọi người giúp em cái code tự động cập nhật số lượng nhập, thành tiền nhập, số lượng xuất, thành tiền xuất trong sheer CDNXT mà không phải dùng hàm sumif với a. Xin cảm ơn mọi người.
Bạn ChanhTQ ơi cho mình hỏi mình chạy đoạn code của bạn rồi sao không thấy nó cập nhật số lượng, thành tiền của cột nhập trong kỳ và xuất trong kỳ nhỉ. Nó chỉ hiện có số 0 thôi.
Option Explicit
Sub TonCuoiKy()
Dim jJ As Byte, ShName As String: Const Col As Byte = 5
Dim Cls As Range, Rng As Range, WF As Object, Sh As Worksheet
Set WF = Application.WorksheetFunction: Sheets("CDNXT").Select
For Each Cls In Range([D7], [D65500].End(xlUp))
For jJ = 1 To 2
ShName = Choose(jJ, "Nhap", "Xuat"): Set Sh = Sheets(ShName)
Set Rng = Sh.Range(Sh.[G6], Sh.[G65500].End(xlUp))
Cells(Cls.Row, Col + 2 * jJ).Value = WF.SumIf(Rng, Cls.Value, Rng.Offset(, 1))
Cells(Cls.Row, 1 + Col + 2 * jJ).Value = WF.SumIf(Rng, Cls.Value, Rng.Offset(, 3))
' Dòng Lenh De Gán Cong Thúc Vo Tòn Cuo1i Kì:'
Cells(Cls.Row, 2 * Col + jJ).FormulaR1C1 = "=RC[-6]+RC[-4]-RC[-2]"
Next jJ
Next Cls
End Sub
Bạn Copy toàn bộ & chép đè lên macro cũ ở module 1;
Nếu muốn thể hiện trị số thì bạn hãy thử sức trước đi!
mình chưa học VBA bao jo mà đến lúc làm đồ án thầy bảo phải xuất dc bản vẽ trục vít bánh vít từ VBA trong cad ra.ai pro jup chỉ mình viết bản code với để mình tìm hiểu thêm
Xin lỗi mọi người vì đã "đào mộ" lại topic cũ.
Gửi ChanhTQ@ và các bạn!
Mình tải file này về xem nhưng cứ mỗi lần vào sh CDNXT thì nó cứ hiện ra thông báo là "Bạn cần tính toán đầu kỳ" và sau đó là lỗi out of memory (mình dùng office 2010).
Mình muốn thay vì thông báo như trên thì mình gán nó vào một nút lệnh chỉ chạy khi cần (nếu được thì nó tự tính toán luôn như công thức vậy) và khắc phục lỗi out of memory trên office 2010?