macro lấy dữ liệu duy nhất và sắp sếp

Liên hệ QC

tuanh1979

Thành viên chính thức
Tham gia
7/7/07
Bài viết
57
Được thích
0
Trong file mình có tạo một macro copy dữ liệu duy nhất và sắp sếp theo thứ tự. Mình ấn F5 thì file chạy bình thường nhưng khi gắn đoạn code
Private Sub Worksheet_Change(ByVal Target As Range)
MACR
End Sub
thì máy lại chạy không ngừng.
Mọi người xem giúp mình với.
Nhân tiện có cách nào hay hơn thì chỉ cho mình nhé
 
Khi bạn copy dl vào sh thì sh đã change nên sẽ chạy MACR, ie chạy mệt luôn.
Đâu cần phải có
Private Sub Worksheet_Change(ByVal Target As Range)
MACR
End Sub
Tạo 1 nút, khi click vào thì sẽ run MACR, hay là nhấn Alt F8, hay là tạo phím tắt.
 
Upvote 0
hoặc bạn dùng code này
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
[COLOR=red]Application.EnableEvents = False[/COLOR]
MACR
[COLOR=red]Application.EnableEvents = True[/COLOR]
End Sub
Thân.
 
Upvote 0
Mình đã làm theo hướng dẫn và đã ra được kết quả, nhưng có một vấn đề nữa là khi số phiếu từ 10 trở lên nó lại sắp sếp như thế này:
PN1
PN10
PN11
..
PN2
PN21
...
PX1
PX10
...
Nhưng mình muốn sắp sếp theo kiểu này
Pn1
PN2
....
PN10
PN11
..
PX1
PX2
...
PX10
Giúp mình thêm với.
 
Upvote 0
Nếu muốn vậy thì bạn hãy thêm số 0 vào, ví dụ PN01.
 
Upvote 0
minhlev đã viết:
Nếu muốn vậy thì bạn hãy thêm số 0 vào, ví dụ PN01.
Đây là kinh nghiệm quý báu khi sắp xếp các chuổi có đuôi là số đấy... Nếu biết chắc đuôi số này có 3 ký tự thì tốt nhất nên gỏ vào theo dạng 001,002,...,099,...999... tránh gõ theo kiểu bình thường 1,2,...99,...,999... sẽ xảy ra trường hợp đáng tiếc như ở trên
 
Upvote 0
hi hi, đúng rồi, mình làm được rồi. Cảm ơn mọi người nhé
 
Upvote 0
Mình hỏi thêm nhé, tại sao macro lúc chạy lúc không chạy, trong phần
Private Sub Worksheet_Change(ByVal Target As Range)
loc
xem
tk
End Sub
Mình có để nhiêu lệnh quá trong đoạn lệnh đó không nhỉ, có bị giới hạn không nhỉ
 
Upvote 0
tuanh1979 đã viết:
Mình hỏi thêm nhé, tại sao macro lúc chạy lúc không chạy, trong phần
Private Sub Worksheet_Change(ByVal Target As Range)
loc
xem
tk
End Sub
Mình có để nhiêu lệnh quá trong đoạn lệnh đó không nhỉ, có bị giới hạn không nhỉ
Kể cũng lạ thật, bạn gửi file đó lên diễn đàn đi.
 
Upvote 0
Private Sub Worksheet_Change(ByVal Target As Range)
loc
xem
tk
End Sub
Worksheet_Change, cái gì change, phải có 1 cell nào thay đổi thì mới chạy.
Cái này nên dùng Private Sub Worksheet_Activate()
Nhưng mà cũng không nên dùng sự kiện, nên dùng 1 nút thực hiện lệnh.
 
Upvote 0
Mình gửi lên nhờ bạn xem hộ nhé, mình thấy lạ quá, nhưng mình nhập dữ liệu trực tiếp trên sheet thi lại đc và nhiều lúc trong cửa sổ của VB lại thấy tự động tạo ra một file khác nhưng khi quay lại Excel tìm thì không có. Bạn vào button Tong hop, kích đúp vào bản ghi, nó sẽ hiện ra một phiếu chứa đựng nội dung của phiếu đó. nhưng dữ liệu không thay đổi vì macro không hoạt động. Bực quá
 

File đính kèm

Upvote 0
Tạo một CommandButton, và chép dòng lệnh sau vào.
Private Sub CommandButton1_Click()
loc
xem
tk
End Sub
Bỏ cái Private Sub Worksheet_Change(ByVal Target As Range) đi, làm như vậy khi bạn edit 1 cell nào nó cũng thực hiện loc, xem, tk =>chậm.
 
Upvote 0
Mình đã đổi thành Private Sub Worksheet_Activate() nhưng vẫn không được. Bác Thu Nghi nói đúng quá, mỗi lần xóa hoặc thay đổi cell nào thì màn hình nháy và thực hiện lọc nên chậm quá. Mình làm trên form nên chưa biết đặt nút lệnh như thế nào cho hợp. Mình sẽ nghiên cứu thêm. Thank Bác các nhé
 
Upvote 0
To Bác Thu Nghi
Mình làm theo hướng dẫn của Bác
Private Sub xem_Click()
TKCN
Me.LB.RowSource = "TKCNLB"
End Sub
nhưng máy báo lỗi
No list was found. Select a single cell within your list and then click the command again
Bác chỉ cho mình tiếp nhé.
Xin lỗi vì hỏi nhiều quá
 
Upvote 0
Private Sub xem_Click()
TKCN
Me.LB.RowSource = "TKCNLB"
End Sub
Xem ở frm nào?
Tìm không thấy Sub TKCN() nào.
"TKCNLB" cũng không thấy range nào như vậy. Và LB là chỗ nào. Chắc bạn đưa file lại quá. File BH1 không có.
 
Upvote 0
Bạn kích vào button cong no, chon một mặt hàng nào đó rồi chọn button xem. Giúp mình nhé
 

File đính kèm

Upvote 0
tuanh1979 đã viết:
Bạn kích vào button cong no, chon một mặt hàng nào đó rồi chọn button xem. Giúp mình nhé

1/ Bạn khai báo cho bộ lọc mà không biết lọc ở chỗ nào thì nó báo lỗi là đúng thôi. Bạn chỉ thêm vào câu lệnh duy nhất để nhắc cho macro biết là bạn đang lọc ởp Sh nào là OK ngay
Câu lệnh của bạn hiện giờ là :

Sub TKCN()
Sheets("Dulieu").Select
Range("i1:m100").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"O1:O2"), CopyToRange:=Range("O5:S5"), Unique:=False
End Sub

Thân
 
Upvote 0
tuanh1979 đã viết:
Bạn kích vào button cong no, chon một mặt hàng nào đó rồi chọn button xem. Giúp mình nhé
Do Sub TKCN() bạn không chỉ định sh nào để filter nên nó báo lỗi.
Bạn xem lại thử file.
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom