Làm thế nào để tìm kiếm chuỗi?????????

Thảo luận trong 'Ứng dụng Excel' bắt đầu bởi heroic, 11 Tháng năm 2006.

2,726 lượt xem

  1. heroic

    heroic Thành viên hoạt động

    Bài viết:
    56
    Đã được thích:
    0
    Nơi ở:
    vn
    Xem file In Phieu THU_CHI của Bác Adam_tran thấy hay quá, trong khi em lại đang làm thủ công bằng cách chọn Phiếu rồi in, mất rất nhiều thời gian. Mong các cao thủ chỉ giáo em giải thuật sau:
    file Dulieu của em có dạng, tại cột D là dữ liệu phiếu thu, chi không liền nhau vì tất cả các nghiệp vụ đều trên file này.
    PT01/03
    .
    .
    PT02/03
    PC01/03
    PT03/03
    .
    .
    .
    (Khi muốn in phiếu nào thì hiện tại em chọn phiếu đó rồi ra lệnh in. theo thủ tục in em viết là lấy tham số ô hiện tại rồi chuyển qua sheet In_Phieuthu.)

    Bây giờ em muốn viết một thủ tục có dạng giải thuật sau:
    khi minh in là "PT"
    Tìm trên cột D10:D1000 khi gặp "PT01" thì gán sang sheet In_phieuthu prevew lên rồi khi in xong phiếu đó đóng lại thì nó lại tìm tiếp tới "PT02" và lặp lại cho đến khi không tìm thấy nữa thoát khỏi vòng lặp và kết thúc.

    Vấn đề của em là! Chưa biết dùng code nào để tìm kiếm chuỗi, mong các cao thủ giúp cho, chứ In chọn như hiện tại thì cũng được nhưng vẫn là thủ công.
     
    #1
  2. Bình_OverAC

    Bình_OverAC Over Abnormal / Crazy

    Bài viết:
    845
    Đã được thích:
    7
    Nơi ở:
    Nha Trang
    1. Bác có thể dùng vòng lặp để dò tìm đến khi nào thỏa điều kiện thì thôi
    2. Bác có thể dùng Macro Recoder để lưu lại thủ tục tìm kiếm. rồi tận dụng cái đó để viết code tiếp.

    Chúc bác thành công.
     
    #2
  3. SA_DQ

    SA_DQ Thành viên thân thiết

    Bài viết:
    432
    Đã được thích:
    37
    Nơi ở:
    HCM city
    Theo mình, trước khi tìm chuỗi bạn nên xếp cột D này (= macro luôn);
    Sau đó dùng Inputbox để ghi nhận vô biến số Phiếu thu/Chi mà bạn muốn;
    Chép lần lượt các hàng của nội dung vô Form InAn;
    Nếu còn khó khăn gì thông báo trực tiếp nha!
     
    #3
  4. ntb_802

    ntb_802 Thành viên sơ cấp

    Bài viết:
    39
    Đã được thích:
    1
    Nơi ở:
    Ha Noi
    PT02/03
    PC01/03
    PT03/03
    ...
    (Khi muốn in phiếu nào thì hiện tại em chọn phiếu đó rồi ra lệnh in. theo thủ tục in em viết là lấy tham số ô hiện tại rồi chuyển qua sheet In_Phieuthu.)
    ...
    [/QUOTE]

    Mình giả sử nơi bạn chọn in phiếu thu là ô G7 (nơi chứa PT02/3...) nút in nằm một chỗ nào đó trong sheet in phiếu thu
    tại ô k7 mình điền công thức: k7=mid(g7;3;2)*1
    tại ô k8 mình điền công thức: k8 =if(k7<10;"PT0"&(k7+1)&"/03";"PT"&(k7+1)&"/03"), sau mỗi lệnh in mình lại copy ô k8 (value) sang ô g7
    Nghĩa là
    Sub inmotban_click()
    'Lệnh in ở đây (có thể dùng record để tạo) giả sử là:
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate:=True
    ' sau lệnh in là đoạn mã sau:
    Range("K8").Select
    Selection.Copy
    Range("G7").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Range("G7").Select
    (mẹo nhỏ này cứ sau một lệnh in thì phiếu thu lại tăng lên một và bạn không phải chọn lại nữa)

    Trước đây mình cũng vướng như bạn nhưng qua đoạn mã trên đã giảm được rất nhiều khi in số lượng phiếu thu và chi lớn bạn hãy linh động mà vận dụng
    có gì bạn cứ post lên đây mình sẽ giải thích thêm. Mong nhận được sự góp ý của các bạn để chúng ta cùng cải tiến thủ thuật trên
     
    #4

Chia sẻ trang này