Tạo nút lệnh và list ???

Liên hệ QC

prhidden

Thành viên mới
Tham gia
8/1/08
Bài viết
8
Được thích
0
Mình muốn tạo 1 nút lệnh ( có tác dụng là sẽ delete dữ liệu trong 1 vùng (VD : A1->D10) và sẽ lưu file Excel đó với tên file là tên trong Ô A11 (lưu trước khi delete))và Tạo list ( khi click vào Ô A1 sẽ có 1 list gồm tên hàng để ta lựa chọn, A2 cũng vậy, A3 .... A10).Như thế thì phải làm sao vậy các Bạn.Bạn nào biết xin chỉ dùm Mình với.Cám ơn
 
Có mấy vấn đề xin hõi lại:
1> Cell A11 đâu có nằm trong vùng A1:D10, vậy sao phải cần lưu theo tên tại A11 trước khi xóa A1:D10? Xóa xong rồi lưu cũng dc vậy
2> Tạo list: đó là chức năng Validation... Giã sữ bạn có vùng tên hàng nằm tại K1:K20... bạn quét chọn vùng này, vào menu Insert\Name\Define.. trong khung Name in Workbook, bạn gõ vào 1 tên nào đó, chẵng hạn là TENHANG... OK... Giờ thì bạn quét chọn những cell nào muốn tạo list, vào menu Data\Validation, khung Allow bạn chọn List, khung Source bạn gõ vào chử =TENHANG
Vậy là xong
Nhưng có điều với cell A11 thì sao? Như hồi nãy bạn nói nó dùng đễ đặt tên file cơ mà
Xin hãy nói rõ thêm chút nữa... Cẫn thận coi chừng lẫn lộn đấy!
ANH TUẤN
 
Trước hết là Mình rất cảm ơn bạn Tuấn đã giúp đỡ.Mình xin nói rõ hơn.Mình có 1 vùng cần xóa,A1->D10 ( vùng nhập dữ liệu ),B5 là tên khách hàng (Tên là Hoa ).Mình muốn tạo 1 nút lệnh khi click vào sẽ xóa dữ liệu trong vùng A1->D10( cả B5), nhưng trước khi xóa thì Mình muốn file excel ( với dữ liệu vừa nhập vẫn còn đó chưa bị xóa ) được lưu vào Ổ cứng với tên là Hoa.xls.Anh Tuấn hiểu ý của Mình hok?Cám ơn bạn Tuấn nhiều.Mấy cái marco mình cũng hok hiểu nhiều lắm ( học tin học văn phòng hok có dạy macro, nên giờ Mình ko biết nhiều lắm về Macro ).Có gì bạn chỉ cẩn thận cho Mình nha.Mình chỉ biết ấn Alt+F11 là Tạo macro thôi :D.Cám ơn bạn nhiều.
 
prhidden đã viết:
nhưng trước khi xóa thì Mình muốn file excel ( với dữ liệu vừa nhập vẫn còn đó chưa bị xóa ) được lưu vào Ổ cứng với tên là Hoa.xls.Anh Tuấn hiểu ý của Mình hok?Cám ơn bạn Tuấn nhiều.
Ý bạn có phải là save as ra một file khác với tên là giá trị ô B5=Hoa trước khi xóa mảng A1:D10 không?
 
Thử file này xem có vừa ý ko? Tất cã chỉ là Record macro, đơn giãn mà...
Chú ý: Bạn muốn lưu file vào thư mục nào thì sửa đường dẫn thật chính xác vào cell P1 nhé!
ANH TUẤN
 

File đính kèm

  • Saoluu.xls
    22.5 KB · Đọc: 157
Bạn anhtuan ơi

Bạn ơi muốn tạo list mà lấy danh sách ở Sheet 2 thì làm như nào ??
 
Thì như tôi đã hướng dẫn tại bài #2 ấy... Validation lấy list tại 1 sheet khác thì bắt buộc phải Define name...
Bạn đọc kỹ đi... tôi nghĩ hướng dẫn như thế là rõ ràng lắm rồi đấy!
ANH TUẤN
 
Làm sao Tạo được nút Lưu file vậy Anh Tuấn.
 
prhidden đã viết:
Làm sao Tạo được nút Lưu file vậy Anh Tuấn.
Cái đó là Command Button trên thanh Forms... Bạn click phải chuột trên thanh Toolbars, chọn Forms... Trong thanh này bạn sẽ nhìn thấy nút lệnh... Click chọn nó và vẽ ra bãng tính...
Lưu ý: Bạn có thể vẽ ra bãng tính bất cứ hình gì bạn thích chứ ko hẳn phải cần Command Button này đâu... Chẳng hạn vẽ hình vuông... Click phải nó, chọn Assign macro... rồi chỉ tới macro cần chạy... Thế là từ đây hình vừa vẽ khi click vào sẽ chạy 1 macro nào đó...
Đơn giãn vậy thôi...
ANH TUẤN
 
Cám ơn bạn Anh Tuấn nhiều.Mình gặp thêm 1 vấn đề này nữa.Hôm nay là ngày 15-1, Mình muốn file Hoa tự động lưu vào thư mục E:\Toa Hàng\15-1\Hoa.xls.Hôm sau, thì Mình muốn Nó tự động lưu vào 16-1 ( mình ko cần ra Explorer Tạo Folder trước ).Với lại, trong cùng 1 ngày, cò thể sẽ có tên khách hàng trùng nhau, Máy sẽ báo là Overwrite, làm sao để Máy tự động thêm số sửa tên lại file Hoa ( Vd như là Hoa1.xls) .Cám ơn bạn rất nhiều
 
Vậy thì phải làm thêm 1 code nữa đễ tạo thư mục, vì thực chất trước khi bấm nút, thư mục này chưa tồn tại... Bạn làm như sau:
1> Sửa công thức tại P1 thành:
Mã:
="C:\Documents and Settings\DinhUt\Desktop\"&TEXT(TODAY(),"dd-mm-yyyy")&"\"
Trong đoạn code cũa file củ, bạn thêm dưới dòng 2 1 đoạn:
MkDir Range("THUMUC")
Cụ thể như sau:
PHP:
Sub LUU()
   Range("B5").Copy
   Range("P2").PasteSpecial xlPasteValues
   MkDir Range("THUMUC")
   THUMUC = Range("THUMUC")
   TENFILE = Range("TENFILE") & ".xls"
   Range("A1:D10").ClearContents
   ActiveWorkbook.SaveAs Filename:=THUMUC & TENFILE
   Range("A1").Select
End Sub
Xem file đính kèm, và sữa đoạn text trong cell P1 cho phù hợp máy tính cũa bạn!
Mến
ANH TUẤN
 

File đính kèm

  • Saoluu.xls
    22.5 KB · Đọc: 38
Rút code lại 1 chút cho ngắn gọn hơn:
PHP:
Sub LUU()
   Range("B5").Copy
   Range("P2").PasteSpecial xlPasteValues
   MkDir Range("THUMUC")
   Range("A1:D10").ClearContents
   ActiveWorkbook.SaveAs Filename:=Range("THUMUC") & Range("TENFILE") & ".xls"
   Range("A1").Select
End Sub
 
Cám ơn các bạn nhiều, Mình dùng đoạn macro của các bạn với tên khách hàng là Hoa.xls thì OK, nhưng đến khách hàng thứ 2, do đã Make Dir thumuc roi, nên sẽ bị lỗi và có thêm 1 khách hàng nữa là Hoa thì làm sao để Nó tự sửa lại file là Hoa1.xls để ko phải overwirte lên file Hoa.xls.Chúc Bạn năm mới vui vẻ.
 
prhidden đã viết:
Cám ơn các bạn nhiều, Mình dùng đoạn macro của các bạn với tên khách hàng là Hoa.xls thì OK, nhưng đến khách hàng thứ 2, do đã Make Dir thumuc roi, nên sẽ bị lỗi và có thêm 1 khách hàng nữa là Hoa thì làm sao để Nó tự sửa lại file là Hoa1.xls để ko phải overwirte lên file Hoa.xls.Chúc Bạn năm mới vui vẻ.

- đúng vậy, mình cũng gặp tình trang báo lỗi thw mục đã có, không thể tạo lại thư mục
- gặp khách hàng khác ũng tên hoa thì có thể thêm thời gian hiện tại vào tên phai được không? và làm như thế nào?
 
Thật ra sửa code cũng ko khó khăn gì, nghĩa là "nói" cho code biết nếu đã có thư mục rồi thì... khỏi tạo... Cách dễ nhất là dùng "On Error Resume Next"
Sửa code trên thành:
PHP:
Sub LUU()
   On Error Resume Next
   Range("B5").Copy
   Range("P2").PasteSpecial xlPasteValues
   MkDir Range("THUMUC")
   THUMUC = Range("THUMUC")
   TENFILE = Range("TENFILE") & ".xls"
   Range("A1:D10").ClearContents
   ActiveWorkbook.SaveAs Filename:=THUMUC & TENFILE
   Range("A1").Select
End Sub
ANH TUẤN
 
anhtuan1066 đã viết:
Thật ra sửa code cũng ko khó khăn gì, nghĩa là "nói" cho code biết nếu đã có thư mục rồi thì... khỏi tạo... Cách dễ nhất là dùng "On Error Resume Next"
Sửa code trên thành:
PHP:
Sub LUU()
On Error Resume Next
Range("B5").Copy
Range("P2").PasteSpecial xlPasteValues
MkDir Range("THUMUC")
THUMUC = Range("THUMUC")
TENFILE = Range("TENFILE") & ".xls"
Range("A1:D10").ClearContents
ActiveWorkbook.SaveAs Filename:=THUMUC & TENFILE
Range("A1").Select
End Sub
ANH TUẤN
Xin chào ANH TUẤN
A/ xin cho hỏi:
1- trong code không đả động gì đến ô P1 mà sao lại tạo được thư mục và đường dẫn như ô P1
2- Muốn phai được lưu "B5.xls" vẫn giữ nguyên các giá trị trong các ô mà chỉ xóa các ô ở phai gốc "luu.xls" để thay các giá trị mới thì phải sửa code thế nào? (hiện tại code như trên thì xóa dữ liệu trong phai "B5.xls", chỉ có tác dụng như là tạo ra 1 biểu mẫu trống rỗng thoai)
 
Tôi trã lời bạn câu 1: Code tuy ko nói gì đến P1, nhưng do P1 đã dc đặt tên trong Define name rồi, tên nó là THUMUC... bạn vào menu Insert\Name\Define sẽ thấy ngay
Còn câu 2: nhờ các bạn khác trã lời hộ, vì tôi ko hiểu lắm
ANH TUẤN
 
Web KT
Back
Top Bottom