Tạo giao diện để phập liệu (1 người xem)

Liên hệ QC

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

Number1gen

Thành viên mới
Tham gia
14/7/07
Bài viết
16
Được thích
2
Các bạn giúp mình vấn đề này nhé.

Mình đang cần tạo ra một giao diện để nhập dữ liệu, sau đó lưu tất cả các giữ liệu vào trong sheet xác định.

Trong giao diện có cách nào sử dụng drop-list để chọn ngày không?

Thanks nhiều.
 
Bạn nên đưa một file vd nên để cho các bác giỏi VBA hỗ trợ, thì mới biết bạn cần giao diện cho cái gì chứ?
 
- Không biết nhu cầu của bạn thế nào, đây là mẫu vd để bạn tham khảo nè .
 

File đính kèm

Mình thử cái này nhưng sao nhập xong một box nó phải nhảy tuần tự xuống box tiếp theo nhưng ở đây nó lại nhảy cách là sao?
 
- Khi bạn nhập vào 5 textbox thì nó in ra theo 5 cột từ trái qua phải, còn ý bạn nói nhảy cách là sao bạn hãy nói rõ hơn đi .
 
Và cho mình hỏi luôn chút là làm thế nào khi ok để nhập tiếp data vào các box thì số liệu cũ nó phải biến mất luôn và chỉ nhập data mới vào thôi, chứ nếu không mất công xoá data cũ thì take time lắm. Mong trả lời sớm Xin bổ sung

Như thế này đi tôi áp dụng ngay vd của bạn vào một file làm việc của công ty tôi cho một vị làm về nhập liệu, tôi xin up lên vd của bạn nhưng tôi đã sửa theo chủ đề các cột mà tôi định làm, nhưng vì không hiểu về VBA nên bạn có thể correct lại cho tôi code bên trong làm sao khi hiện bảng nhập liệu nên thì nhập vào các cell "cần nhập" lưu ý trong đó có cột description là tôi không cần nhập vì cột này tôi sử dụng hàm vlook tìm cho nhanh. Bạn xem và giúp tôi nhé. Tks
 

File đính kèm

Lần chỉnh sửa cuối:
Máy của bị nhiểm virus rồi Hương Thơm ơi!
 
Nguyễn Hương Thơm đã viết:
Mình thử cái này nhưng sao nhập xong một box nó phải nhảy tuần tự xuống box tiếp theo nhưng ở đây nó lại nhảy cách là sao?
Muốn nhảy tuần tự theo ý, bạn vào VBA vào mở Properties của từng box (Textbox) và chỉnh lại TabIndex theo thứ tự. Hy vọng đúng ý bạn

TDN
 
- Cái này sửa lại theo ý bạn có chú thích mã nguồn
- Nội dung thì bạn điều chỉnh lại theo ý vì file củ bị virut nên mình bỏ rồi.


ĐMT
 

File đính kèm

Lần chỉnh sửa cuối:
Minh không hiểu sao máy bị virus macro diệt rồi mà mỗi lần mở 1 file êxcl nào đó thì nó cứ luôn code VBA của một file mở trước đó vào file mới mở, hiện nay chưa biết cáchh khắc phục, ai bít chỉ dùm với
 
dmtdmtbb đã viết:
- Cái này sửa lại theo ý bạn có chú thích mã nguồn
- Nội dung thì bạn điều chỉnh lại theo ý vì file củ bị virut nên mình bỏ rồi.


ĐMT
Cám ơn bạn, thực ra mình muốn áp dụng cái đó vào các trường như sau:

Cột STT, Cột Date, Cột Base Code, cột mô tả hh(nhưng không cần nhập ở cột này), cột batch, cột reason, cột remarks . Còn nó sẽ có đến khoảng 400 dòng, nếu đc bác thử hộ cái nhé?
 
- Cái đó làm đúng như ý bạn, bạn chỉ cần sửa lại tiêu đề cột là được thôi, còn 400 dòng là sao mình không hiểu bạn nói rõ hơn đi.
- Có nghĩa là nhập 1 lần thì in 400 dòng hay là sao.
 
Cám ơn các bạn nhiều, các bạn chưa biết tạo giao diện để nhập liệu có thể tham khảo ở đây để tạo một giao diện nhập liệu đơn giản: http://www.contextures.com/xlUserForm01.html

Rất dễ hiểu và dễ áp dụng.

dmtdmtbb đã viết:
- Cái đó làm đúng như ý bạn, bạn chỉ cần sửa lại tiêu đề cột là được thôi, còn 400 dòng là sao mình không hiểu bạn nói rõ hơn đi.
- Có nghĩa là nhập 1 lần thì in 400 dòng hay là sao.
 
dmtdmtbb đã viết:
- Cái đó làm đúng như ý bạn, bạn chỉ cần sửa lại tiêu đề cột là được thôi, còn 400 dòng là sao mình không hiểu bạn nói rõ hơn đi.
- Có nghĩa là nhập 1 lần thì in 400 dòng hay là sao.

Hi bác dmtdmtbb, cám ơn bác đã chỉnh sửa đúng như ý của em, nhưng em đang bị mặc một vấn đề là khi chuyển đổi dữ liệu từ một file khác sang file này thì khi nhập liệu tiếp từ dòng 67 nhưng sau khi ok nó lại nhảy xuống tận dòng 90 (bác xem file gửi kèm) có gì giúp em với nhé, tks các bạc NHT
 

File đính kèm

Chú ý File cuả bạn bị nhiễm vi rut
Lý do bạn chép từ file khác qua nên hàm Vlookup vẫn phải link dữ liệu từ file cũ
Chỉnh lý lại xem sao
Máy tôi khong mở được macro cua bạn nên không biêt cụ thể thế nào, để tôi đưa qua máy khác thủ xem sao rồi trả lời bạn
 
Cám ơn bác, đúng máy em đang bị virus macro nhưng ko biết diệt cách nào nhờ các bác trên diễn đàn rồi nhưng áp dụng không thấy hiệu quả,

Còn với cái file của em thì nó cũng không phức tạp gì cả chỉ là tạo một form nhập liệu theo các trường mà em có trên đó thôi, mong bác chỉ giáo thêm cho em
 
Mình xin phép chỉnh sơ file của dmtdmtbb để đáp ứng thêm các yêu cầu sau:
-Khi nhập textb1, enter thì focus nhảy sang textb2...
-Khi nhập xong, enter thì tất cả các textb đều trống.
 

File đính kèm

Cám ơn bác đúng ra là sau khi nhập và OK rồi thì các textbox đó phải empty để minh nhập tiếp thì nhanh, vừa rồi em áp dụng thấy rất ổn

Cho mình hỏi chút, nếu trong trường hợp mình mở rộng thêm các cột khác VD từ cột VD muốn mở thêm từ cột I đến cột K thì làm thế nào ? sửa chỗ nào trong code? vì em kô biết VBA nên bác reply chi tiết để anh em học vẹt đã nhé/ tks
 
voda đã viết:
Mình xin phép chỉnh sơ file của dmtdmtbb để đáp ứng thêm các yêu cầu sau:
-Khi nhập textb1, enter thì focus nhảy sang textb2...
-Khi nhập xong, enter thì tất cả các textb đều trống.

Em góp ý một tí cho vui:
- Trong khung nhập liệu cho phần Reasons (Txtb6) & khung nhập liệu cho phần Remarks (Txtb7), nên chọn chế độ Multiline = True. để khi nhập liệu giả sử số dòng dữ liệu dài hơn độ dài hiện hành của textbox thì dữ liệu tự động xuống hàng (nhìn thấy đủ nội dung).

Thân mến !
 
Nguyễn Hương Thơm đã viết:
Hi bác dmtdmtbb, cám ơn bác đã chỉnh sửa đúng như ý của em, nhưng em đang bị mặc một vấn đề là khi chuyển đổi dữ liệu từ một file khác sang file này thì khi nhập liệu tiếp từ dòng 67 nhưng sau khi ok nó lại nhảy xuống tận dòng 90 (bác xem file gửi kèm) có gì giúp em với nhé, tks các bạc NHT

- Cái này đã sửa rồi, bạn tải về mà sài.


ĐMT
 

File đính kèm

Lần chỉnh sửa cuối:
Cám ơn bác nhiều lặm Chúc bác có ngày nghỉ cuối tuần vui vẽ
 
- Dạo này virut lây lan qua không hiểu lý do vì sao, các bạn nên cản thận với các file tải về.
- Bạn chịu khó nhập liệu lại nha mình đã làm lại file sạch link tải như củ.

- Chúc các bạn ngày cuối tuần vui vẻ.


ĐMT
 
Tôi e rằng nếu ko có virus thì sẽ... ko vui!... Ít ra nhờ nó mà trình độ của mình tăng lên đáng kể đấy chứ... hi... hi...
ANH TUẤN
 
- Tới mùa lũ người ta thường có chủ trương sống chung với lũ, đó là các vùng bị ngập lục.
- Còn đối với người sử dụng máy vi tính thì lúc nào củng có virut đi kèm vì vậy bà con chuẩn bị tinh thần sống chung với virut đi là vừa.
 
Nguyên văn bởi Nguyễn Hương Thơm
nếu trong trường hợp mình mở rộng thêm các cột khác VD từ cột VD muốn mở thêm từ cột I đến cột K thì làm thế nào ? sửa chỗ nào trong code?
Muốn mở thêm cột, bạn phải tạo thêm textbox trên form:
-Mở cửa sổ code (Alt+F11). Mở form ở trạng thái chỉnh sửa. Hiển thị hộp Toolbox (View/toolbox). Kéo chuột lên đối tượng ab từ toolbox vào form.
-Sau khi tạo, vào properties của từng textbox đặt lại tên (txtb8,txtb9...), chỉnh tabindex có cùng số với textbox.Nếu box nào nhập nhiều dòng thì chỉnh MultiLine=true.
Sau đó vào cửa sổ code, thêm vào như sau:
-If txtb1 = "" Or txtb2 = "" Or txtb3 = "" Or txtb4 = "" Or txtb5 = "" Or txtb6 = "" Or txtb7 = "" Or txtb8 = "" Or txtb9 = "" Then
-ws.Cells(iRow, 6).Value = Me.txtb5.Value
ws.Cells(iRow, 7).Value = Me.txtb6.Value
ws.Cells(iRow, 8).Value = Me.txtb7.Value
ws.Cells(iRow, 9).Value = Me.txtb8.Value
ws.Cells(iRow, 10).Value = Me.txtb9.Value

-txtb5 = ""
txtb6 = ""
txtb7 = ""

txtb8 = ""
txtb9 = ""
Chúc bạn thành công.
 
voda đã viết:
Mình xin phép chỉnh sơ file của dmtdmtbb để đáp ứng thêm các yêu cầu sau:
-Khi nhập textb1, enter thì focus nhảy sang textb2...
-Khi nhập xong, enter thì tất cả các textb đều trống.

Thầy Voda vui lòng hướng dẫn hoặc giải thích giùm em công dụng của đoạn mã:
iRow = ws.Cells(Rows.Count, 6) _
.End(xlUp).Offset(1, 0).Row


Cảm ơn Thầy - Chúc thầy luôn vui & mạnh khỏe !
 
Ý nghĩa câu lệnh

Xin phép thầy voda cho giải thích chút xíu .Ý nghĩa câu lệnh trên như sau :
1.Kiểm tra xem cột thứ 6 (cột F) trong bảng tính ô có chứa dữ liệu cuối cùng là ô nào - Rows.Count
2.Tiếp theo di chuyển lên phía trên đến khi gặp ô trống thì dừng (nếu cột F có nhiều vùng dữ liệu không liên tục thì nó di chuyển đến ô đầu của vùng dữ liệu cuối cùng) - End(xlUp)
3.Tiếp nữa là dịch xuống 1 dòng (nhằm mục đích nhập dữ liệu mới) - Offset(1,0) --> số 1 là chỉ số dòng sẽ dịch xuống, nếu sửa thành số i thì nó dịch xuống i dòng, số 0 chỉ số cột cần dịch, trong trường hợp này là không dịch chuyển cột.
4.Cuối cùng là dùng .Row để xác định số dòng của ô đang chọn và gán vào biến iRow
 
Lần chỉnh sửa cuối:
voda đã viết:
Muốn mở thêm cột, bạn phải tạo thêm textbox trên form:
-Mở cửa sổ code (Alt+F11). Mở form ở trạng thái chỉnh sửa. Hiển thị hộp Toolbox (View/toolbox). Kéo chuột lên đối tượng ab từ toolbox vào form.
-Sau khi tạo, vào properties của từng textbox đặt lại tên (txtb8,txtb9...), chỉnh tabindex có cùng số với textbox.Nếu box nào nhập nhiều dòng thì chỉnh MultiLine=true.
Sau đó vào cửa sổ code, thêm vào như sau:
-If txtb1 = "" Or txtb2 = "" Or txtb3 = "" Or txtb4 = "" Or txtb5 = "" Or txtb6 = "" Or txtb7 = "" Or txtb8 = "" Or txtb9 = "" Then
-ws.Cells(iRow, 6).Value = Me.txtb5.Value
ws.Cells(iRow, 7).Value = Me.txtb6.Value
ws.Cells(iRow, 8).Value = Me.txtb7.Value
ws.Cells(iRow, 9).Value = Me.txtb8.Value
ws.Cells(iRow, 10).Value = Me.txtb9.Value

-txtb5 = ""
txtb6 = ""
txtb7 = ""

txtb8 = ""
txtb9 = ""
Chúc bạn thành công.

Cám ơn bạn Vosa đã HD, mình sẽ làm thử và nếu không đc sẽ làm phiền bạn sau. tks
 
Nguyên văn bởi Vungoc
giải thích giùm em công dụng của đoạn mã:
Anhphuong đã nói rõ. Mình chỉ bổ sung thêm một vài ý:
-Ta có thể phân câu lệnh làm 4 nhóm:
ws.Cells(Rows.Count, 6) : xác định địa chỉ của 1 ô trong ws. Ô này ở dòng 65536 (dòng cuối trong excel 2003), cột 6. (Rows.count: đếm tất cả dòng). Điều đó có nghĩa là ta có thể viết thành ws.Cells(65536, 6).
End(xlUp) : Từ ô đó đi lên tìm ô cuối của vùng dữ liệu cuối (tính từ trên xuống)
Offset(1, 0): Từ ô tìm được chuyển vị trí xuống 1 dòng.
Row : chỉ số dòng của ô ở vị trí được xác định.
Như vậy câu lệnh ws.Cells(Rows.Count, 6) _
.End(xlUp).Offset(1, 0).Row
trả về một giá trị để gán vào biến iRow.
Cảm ơn lời chúc của Vungoc.

 
Thực sự em đang tìm hiểu về vba, đc các bác chỉ chi tiết như thế này quả là quí hóa quá. Cám ơn tất cả mọi người
 

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

Back
Top Bottom