dùng VBA để báo cáo từ ngày đến ngày (1 người xem)

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

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

Tôi chưa hiểu tại sao phải dùng CLng. Phải chăng cái này có tác dụng đổi dữ liệu ngày tháng sang số để dễ so sánh? Tại sao không so sánh trực tiếp Range("C2").Value với sArray(lR, 1) mà phải gián tiếp biến đổi (Range("C2").Value thành CLng(Range("C2").Value); sArray(lR, 1) thành CLng(sArray(lR, 1)) làm gì?
Nhiều khi dữ liệu nhập không đúng chuẩn nên ta thông qua phép chuyển vậy cho chắc
Ngoài ra, với dữ liệu ngày tháng thì Excel hay dễ nhầm lẫn (bạn viết code AutoFilter với điều kiện ngày tháng sẽ biết điều này)... Thế nên chuyển sang cho đúng kiểu dữ liệu mà ta muốn ---> khỏi lo nó chạy bậy
CLng(DL) ---> Chuyển DL sang kiểu Long
CDbl(DL) ---> Chuyển DL sang kiểu Double
CStr(DL) ---> Chuyển DL sang kiểu String
vân... vân...
-------------
Đây là sự cẩn thận trong thời gian dài tôi làm việc với code (nhiều khi cũng cẩn thận quá đáng...)
Ẹc... Ẹc...
 
Tại sao bài này trên Excel2010 lại không chạy được

Máy của tôi cài 2 Win7(Excel 2010) và WinXP(Excel 2003). Bài này tôi chạy trên Excel2003 hoàn toàn rất ngon, không hiểu sao chỉ riêng bài này sang Excel2010 lại không chạy được (mặc dù các Code khác trong Excel 2010 chạy rất tốt).

Tôi đã thử nghiệm bỏ hẳn lịch hiện ra để tự đánh tay vào fDate và eDate nhưng không hiểu tại sao lại lỗi, mong thày chỉ dùm cho cách bỏ lịch.

(Xin gửi file đính kèm)
 

File đính kèm

Máy của tôi cài 2 Win7(Excel 2010) và WinXP(Excel 2003). Bài này tôi chạy trên Excel2003 hoàn toàn rất ngon, không hiểu sao chỉ riêng bài này sang Excel2010 lại không chạy được (mặc dù các Code khác trong Excel 2010 chạy rất tốt).

Tôi đã thử nghiệm bỏ hẳn lịch hiện ra để tự đánh tay vào fDate và eDate nhưng không hiểu tại sao lại lỗi, mong thày chỉ dùm cho cách bỏ lịch.

(Xin gửi file đính kèm)
- Bấm Alt + F11 để vào cửa sổ Visual Basic
- Vào menu Tools\References
- Có thể bạn sẽ thấy mục Microsoft Calendar... bị lỗi "Missing..."

Capture.JPG

Nếu là vậy thì máy của bạn chưa cài Microsoft Calendar ---> Tải file MSCAL.OCX và cho vào thư mục System32, đăng ký nó là xài được
 
Thầy ơi, ở bài này em muốn thêm cột tồn đầu và tồn cuối có được không Thầy?
 
Em muốn tại Group trường (ngày) thì làm thế nào

Em làm như file đính kèm nhưng bây giờ em muốn thay đổi Group thì phải làm thế nào?

(ví dụ lúc này em không Group từ ngày 3/1/2012 đến 6/2/2012 như file mà em thay đổi thành 3/1/2012 đến 6/2/2012 thì phải làm sao ah)
 

File đính kèm

Thế thì theo code trong đó sửa lại 1 tí:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Dk As Range
  On Error Resume Next
  If Not Intersect(Range("C2:C3"), Target) Is Nothing And Target.Count = 1 Then
    Application.ScreenUpdating = False
    Set Dk = Range("C2:C3")
    Range("A6:D10000").ClearContents
    With Sheet2.Range(Sheet2.[A4], Sheet2.[E65536].End(xlUp))
      .Parent.Range("V:Y").Clear
      .AutoFilter 1, ">=" & CDbl(Dk(1)), xlAnd, "<=" & CDbl(Dk(2))
      .Offset(, 1).SpecialCells(12).Copy
      .Parent.Range("V1").PasteSpecial 3
      .AutoFilter
      With .Parent.Range("V1").CurrentRegion
        Range("A6").Consolidate "'" & .Parent.Name & "'!" & .Offset(1).Address(, , 2), 9, 0, 1
        .Resize(, 1).AdvancedFilter 1, , , True
        .Offset(1, 1).Resize(, 1).Copy: Range("B6").PasteSpecial 3
        .Parent.ShowAllData
        .Clear
      End With
    End With
    Target.Select
    Application.ScreenUpdating = True
  End If
End Sub
Bài này ngày xưa dùng AutoFilter + Advanced Filter + Consolidate để tổng hợp! Nếu bây giờ mà làm bài này, đương nhiên tôi sẽ dùng mảng để xử lý nó....
Hic... làm biếng với mấy bài dạng này quá
e có file này mong các thầy giúp đỡ vì ko rành về vba
file đính kèm
 

File đính kèm

Lần chỉnh sửa cuối:
Web KT

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

Trả lời
42
Đọc
17K
Back
Top Bottom