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

  • Thread starter heroic
  • Ngày gửi
H

heroic

Sơ cấp
11/11/04
56
0
0
vn
#1
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.
 
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
845
7
18
37
Nha Trang
#2
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.
 
S

SA_DQ

Thành viên thân thiết
29/6/05
435
38
28
61
HCM city
#3
heroic nói:
. . . 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.
(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 . . giúp cho.
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!
 
N

ntb_802

Sơ cấp
15/11/04
39
1
0
42
Ha Noi
#4
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
 

Thành viên trực tuyến

  • daongocnam0603
  • ha_dc
  • lkvan105
  • xediengiatot
  • nhabat



Xem nhiều