Tạo Form nhập dữ liệu

Liên hệ QC

phuyen89

Thành viên tích cực
Tham gia
20/11/08
Bài viết
875
Được thích
341
Nghề nghiệp
Student
Em muốn tạo một cái Form như thế nay(Fie đính kèm).Khi nhấn vào nút Add thì dữ liệu mà em nhập vào sẽ tự động chạy vào Excel thì phải viết Code cho 2 nút cmdAdd,cmdClose(nút này thì em biết).Đồng thời phai khoá cái nút Close(X)
 

File đính kèm

  • NHAP LIEU.xls
    NHAP LIEU.xls
    27 KB · Đọc: 272
  • Form.JPG
    Form.JPG
    13.3 KB · Đọc: 103
Em muốn tạo một cái Form như thế nay(Fie đính kèm).Khi nhấn vào nút Add thì dữ liệu mà em nhập vào sẽ tự động chạy vào Excel thì phải viết Code cho 2 nút cmdAdd,cmdClose(nút này thì em biết).Đồng thời phai khoá cái nút Close(X)
Bạn dùng code sau nhé:

Mã:
Private Sub cmdAdd_Click()
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("dulieu")
iRow = ws.Cells(Rows.Count, 1) _
  .End(xlUp).Offset(1, 0).Row
If Trim(Me.txtHT.Value) = "" Then
  Me.txtHT.SetFocus
  MsgBox "Vui long nhap ten", vbInformation
  Exit Sub
End If
ws.Cells(iRow, 1).Value = Me.txtHT.Value
ws.Cells(iRow, 2).Value = Me.txtNS.Value
ws.Cells(iRow, 3).Value = Me.txtQQ.Value
ws.Cells(iRow, 4).Value = Me.txtNN.Value
Me.txtHT.Value = ""
Me.txtNS.Value = ""
Me.txtQQ.Value = ""
Me.txtNN.Value = ""
Me.txtHT.SetFocus
End Sub
Private Sub cmdClose_Click()
  Unload Me
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, _
  CloseMode As Integer)
  If CloseMode = vbFormControlMenu Then
    Cancel = True
    MsgBox "Vui long bam nut thoat!"
  End If
End Sub
 

File đính kèm

Upvote 0
Bạn dùng code sau nhé:
................

Mình thực dụng lắm nên code thường bị mình cắt xén tí cho gọn. Xin mượn code của domfootwear rồi chỉnh sửa tí nhé, nếu có gì không phải, xin bạn bỏ qua cho nha.
PHP:
Private Sub cmdAdd_Click()
If Trim(txtHT) = "" Then
  MsgBox "Vui long nhap ho ten!", vbInformation, "THÔNG BÁO": txtHT.SetFocus: Exit Sub
ElseIf Trim(txtNS) = "" Then
  MsgBox "Vui long nhap ngay thang nam sinh!", vbInformation, "THÔNG BÁO": txtNS.SetFocus: Exit Sub
ElseIf Trim(txtQQ) = "" Then
  MsgBox "Vui long nhap que quan!", vbInformation, "THÔNG BÁO": txtQQ.SetFocus: Exit Sub
ElseIf Trim(txtNN) = "" Then
  MsgBox "Vui long nhap nghe nghiep!", vbInformation, "THÔNG BÁO": txtNN.SetFocus: Exit Sub
End If
Dim NextRow As Long
NextRow = Sheet1.[A65536].End(xlUp).Row + 1
With Sheet1.Cells(NextRow, 1)
  .Value = txtHT
  .Offset(, 1).Value = Format(txtNS, "mm/dd/yyyy")
  .Offset(, 2).Value = txtQQ
  .Offset(, 3).Value = txtNN
End With
txtHT = "": txtNS = "": txtQQ = "": txtNN = "": txtHT.SetFocus
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn xem thêm 1 ph/án nữa nè. Có cả kiểm tra nhập liệu và 1 listbox để hển thị kquả đã nhập liệu nữa.
Xem để biết và sửa cho hợp ý mình nhé.
(sử dụng mã TCVN 3)
 

File đính kèm

Upvote 0
+-+-+-+
Bạn dùng code sau nhé:

Mã:
Private Sub cmdAdd_Click()
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("dulieu")
[COLOR=blue]iRow = ws.Cells(Rows.Count, 1) _[/COLOR]
[COLOR=blue]  .End(xlUp).Offset(1, 0).Row[/COLOR]
[COLOR=blue]If Trim(Me.txtHT.Value) = "" Then[/COLOR]
  Me.txtHT.SetFocus
  MsgBox "Vui long nhap ten", vbInformation
  Exit Sub
End If
ws.Cells(iRow, 1).Value = Me.txtHT.Value
ws.Cells(iRow, 2).Value = Me.txtNS.Value
ws.Cells(iRow, 3).Value = Me.txtQQ.Value
ws.Cells(iRow, 4).Value = Me.txtNN.Value
Me.txtHT.Value = ""
Me.txtNS.Value = ""
Me.txtQQ.Value = ""
Me.txtNN.Value = ""
Me.txtHT.SetFocus
End Sub
Private Sub cmdClose_Click()
  Unload Me
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, _
  CloseMode As Integer)
  If CloseMode = vbFormControlMenu Then
    Cancel = True
    MsgBox "Vui long bam nut thoat!"
  End If
End Sub
Em không hiếu nổi công dụng của đoạn màu xanh là gì.Mong anh trình bày dùm bứoc đi của nó.Em xin cảm ơn
 
Upvote 0
Upvote 0
Đó là số dòng đã có DL trong sheet nhập liệu, để xác định dòng kế tiếp khi ta nhập thêm DL

Nếu không nhập gì cả (để trống tên) thì không cho nhảy sang ô nhập khác.
PHP:
Offset(1, 0).Row
em không hiểu cái thằng offset này đây
trong Aceess em thây dùng ISNULL để kiểm tra ô chua có dữ liệu vậy sang Excel là TRim phải không bạn
 
Upvote 0
1/ Để biết thêm về hàm offset ban đọc ở đây .
2/ Đẻ kiểm tra là chuỗi rỗng người ta dùng biểu thức:
If Trim(Me.txtHT.Value) = "" Then
Hàm Trim() là để cắt khoảng trắng ở 2 đầu của 1 chuỗi. Để ý sau dấu = là hai dấu nháy "" nghĩa là nếu chuỗi đó rỗng (không có gì.)
Nên hiểu kỹ giá trị NULL. Chuỗi rỗng không có nghĩa là có giá trị NULL.
 
Upvote 0
Đó là số dòng đã có DL trong sheet nhập liệu, để xác định dòng kế tiếp khi ta nhập thêm DL
If Trim(Me.txtHT.Value) = "" Then
Nếu không nhập gì cả (để trống tên) thì không cho nhảy sang ô nhập khác.

Câu này có nghĩa là:
(1) If Me.txtHT.Value = "" Then Nếu txtHT để trống (không nhập gì cả) thì xảy ra sự kiện gì đó.
(2) If Trim(Me.txtHT.Value) = "" Then Nếu txtHT nhập những ký tự trắng (nhập khoảng trắng mà không nhập chữ), Hàm Trim sẽ hiệu chỉnh lại trở thành (1) thì xảy ra sự kiện gì đó.
 
Upvote 0
(2) If Trim(Me.txtHT.Value) = "" Then Nếu txtHT nhập những ký tự trắng (nhập khoảng trắng mà không nhập chữ), Hàm Trim sẽ hiệu chỉnh lại trở thành (1) thì xảy ra sự kiện gì đó.
Chính xác là Nếu không nhập gì hoặc chỉ nhập khoảng trắng trong textbox txtHT thì thực hiện các lệnh sau Then. trong sub trên các lệnh sau Then là: txtHT nhận Focus (nôm na là điểm nhập sẽ đứng tại textbox txtHT).
To hugolina36: Hãy sử dụng ngôn từ cho văn hoá đi nhé. Giúp được ai thì giúp không thì đừng vào diễn đàn thả bậy nhé. Hãy học làm người tử tế đi đã.
 
Upvote 0
.Offset(, 1).Value = Format(txtNS, "mm/dd/yyyy")
[/php]
Anh lưu ý là đoạn trên chỉ ra giá trị là text với lại nếu máy khác định dạng không phải là dd/mm/yyyy thì nguy.

Đề nghị Mod xoá đi những bài không có ý nghĩa và có ý khiêu khích, nhục mạ và vô văn hoá.
 
Upvote 0
Anh lưu ý là đoạn trên chỉ ra giá trị là text với lại nếu máy khác định dạng không phải là dd/mm/yyyy thì nguy.

Đề nghị Mod xoá đi những bài không có ý nghĩa và có ý khiêu khích, nhục mạ và vô văn hoá.

Mình đã thử với máy của mình kỹ lắm rồi, máy mình định dạng tại Language & Region là dd/mm/yyyy , nhưng chẳng hiểu sao, khi định dạng trong textbox là Format(txtNS, " dd/mm/yyyy"), và tại cell A1 (ví dụ) nhập vào được định dạng là dd/mm/yyyy thì sẽ cho ra dạng text. Nhưng vẫn là định dạng đó tại A1, nhưng Format(txtNS, "mm/dd/yyyy"), có nghĩa là đão ngược giữa ngày và tháng thì tại Cell A1 lại cho ra kết quả đúng dd/mm/yyyy! Không hiểu tại sao!
 
Upvote 0
Form đơn giản thế này mà dùng UserForm làm gì cho mất công viết code!
Sao không dùng Form có sẳn của Excel nhỉ?
- Quét chọn dòng tiêu đề
- Vào menu Data\Form
- một form hiện ra thế này:

attachment.php


- Nhập xong thì bấm nút Criteria
- Nhập tiếp lại bấm nút Form rồi bấm New
- Nhập xong lại.. Criteria
.... Cứ thế tiếp tục...
Tùy chuyện mà xài các đồng chí ơi (nếu không thì bác Bill đã không cung cấp công cụ này)
(Tôi chưa dùng bao giờ, mới thử sơ qua và thấy nó đáp ứng được nhu cầu của topic này)
 

File đính kèm

  • untitled.JPG
    untitled.JPG
    38.5 KB · Đọc: 325
Upvote 0
Form đơn giản thế này mà dùng UserForm làm gì cho mất công viết code!
Sao không dùng Form có sẳn của Excel nhỉ?
.
Bây giờ tôi cũng mới biết form mẫu của Bill đấy, tuy nhiên:
Có những lúc cũng cần tập tành để tìm hiểu và nâng cao vốn liếng của mình chứ Ndu.
 
Upvote 0
.
Bây giờ tôi cũng mới biết form mẫu của Bill đấy, tuy nhiên:
Có những lúc cũng cần tập tành để tìm hiểu và nâng cao vốn liếng của mình chứ Ndu.
Vâng! TẬP TÀNH để hiểu thêm thì không nói làm gì, có thể xem đây là bài tập
Ý tôi muốn nói về việc XÀI
Chỉ khi nào tôi cảm thấy UserForm nó giúp được tôi thao tác nhanh hơn so với nhập bằng tay thì tôi mới dùng ----> Đối với trường hợp file của chủ topic này, tôi cho rằng dùng UserForm còn chậm hơn
 
Upvote 0
cách lọc dữ liệu

chào các bậc tiền bối! em là dan kế toán mới vào nghê. Em đã nghiên cứu rất nhiều nhưng chưa tìm ra cách lọc dữ liệu này. Đó là trên một sheet mà khi em nhấn vào mũi tên đi xuống có chứa tài khoản thì nó sẽ ra sổ chi tiết hay sổ cái của tài khoản đó. có tiền bối nào biết thỉnh giáo cho em tý .)(&&@@
 
Upvote 0
chào các bậc tiền bối! em là dan kế toán mới vào nghê. Em đã nghiên cứu rất nhiều nhưng chưa tìm ra cách lọc dữ liệu này. Đó là trên một sheet mà khi em nhấn vào mũi tên đi xuống có chứa tài khoản thì nó sẽ ra sổ chi tiết hay sổ cái của tài khoản đó. có tiền bối nào biết thỉnh giáo cho em tý .)(&&@@
Cái này thuộc Validation nó có thể làm cho bạn được.Đầu tiên bạn phai có 1 Sheet chúa những dữ liệu mà bạn cần.Bạn đặt Name cho nó là MTK.
Sau đó bạn quét toàn bộ vùng trống.Vaoa-->Validati Daton-->Tại mục Allow chọn List.
Tại mục Soure bạn đánh Name mà lúc này bạn đạt vào.Khi đó bạn kịch vào 1 ô nào đó,nó sẽ sổ xuống như ban nói
 
Upvote 0
Nhập dữ liệu thành hai dòng

Mình có tạo một from phiếu nhập, nếu mình nhập đơn giá với độ dài là <=3 số thì nó sẽ nhập thành một dòng, nhưng nếu mình nhập với độ dài >3 ký tự thì nó sẽ nhập thành hai dòng. mình loay hoay mai ma không biết vì sao. Các bạn chỉ giúp mình, Thanks
 

File đính kèm

Upvote 0
Sao bạn không đọc các bài trước đó để tham khảo và làm form(bài 4 hoặc bài của Ndu). Form của bạn làm rườm rà mà nhìn vào code thì viết lộn xộn quá.
Đọc tham khảo các bài để tiếp cận vấn đề và giải quyết vấn đề 1 cách bài bản đi bạn nhé.
 
Upvote 0
Web KT

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

Back
Top Bottom