Xin hướng dẫn tạo form nhập liệu theo cột trong excel (1 người xem)

  • Thread starter Thread starter teaklee
  • Ngày gửi Ngày gửi
Liên hệ QC

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

teaklee

Thành viên mới
Tham gia
11/3/13
Bài viết
41
Được thích
1
Do nhu cầu công việc mình cần tạo form nhập liệu cho excel nhưng dữ liệu vào lại chạy theo dòng. Trong khi mình cần nhập liệu theo cột:
Cụ thể như sau:
- Mỗi khách hàng là 1 cột chứa thông tin của khách hàng đó, sau khi bấm nút lưu sẽ tự nhảy sang cột kế tiếp.

Mình có thử code đảo chiều từ hàng sang cột nhưng phải đi qua 1 sheet trung gian để copy 1 dòng dữ liệu sau đó paste qua sheet mình cần.
Làm vậy thì dung lượng của file bị phình ra do lưu cả dữ liệu của sheet trung gian.
Mong các bác cho e xin 1 file mẫu để em chỉnh sửa lại với
 
Đây là ví dụ về bảng dữ liệu thuận:
PHP:
'
     Mã         Ho & Tên           Đ/Chỉ           SoDT           Mã Thuế'
A1  NTH00     Ngô Thị Thu Huyền   21 Lê Duẫn       2132012       101245147
A2  LHF00     Lê Hồng Đức        21A CC Bắc Hải     01245670     1000100023
. .     . . . .
Hay bạn muốn ngược với mọi người, như vầy?:
PHP:
'
                A1              A2   '
Mã              NTH00          LHF00
Ho & Tên   Ngô Thị Thu Huyền   Lê Hồng Đức
Đ/Chỉ          21 Lê Duẫn     21A CC Bắc Hải
SoDT           2132012        01245670
Mã Thuế        101245147      1000100023

. . .    . . .
 
Upvote 0
Do nhu cầu công việc mình cần tạo form nhập liệu cho excel nhưng dữ liệu vào lại chạy theo dòng. Trong khi mình cần nhập liệu theo cột:
Cụ thể như sau:
- Mỗi khách hàng là 1 cột chứa thông tin của khách hàng đó, sau khi bấm nút lưu sẽ tự nhảy sang cột kế tiếp.

Mình có thử code đảo chiều từ hàng sang cột nhưng phải đi qua 1 sheet trung gian để copy 1 dòng dữ liệu sau đó paste qua sheet mình cần.
Làm vậy thì dung lượng của file bị phình ra do lưu cả dữ liệu của sheet trung gian.
Mong các bác cho e xin 1 file mẫu để em chỉnh sửa lại với
Làm việc này được nhưng lại không biết tạo file mẫu, hóng ai ngang qua và rảnh làm cái file mẫu xem chơi.
 
Upvote 0
Thay vì:
PHP:
Private Sub CmdLuu_Click()
Dim Col As Byte

 Col = [A2].End(xlToRight).Column + 1
 Cells(2, Col).Value = Me!tbTT.Text:             Cells(3, Col).Value = Me!tbMa.Text
4 Cells(4, Col).Value = Me!tbHD.Text:             Me!tbHD.Text = "GPE.COM"
 Cells(5, Col).Value = Me!tbTen.Text:            Me!tbTen.Text = "GPE.COM"
6 Cells(6, Col).Value = TxtToDate(Me!tbNS.Text):  Me!tbNS.Text = "GPE.COM"
 Cells(7, Col).Value = Me!tbNu.Text:             Me!tbNu.Text = "?"
 Cells(8, Col).Value = "'" & Me!tbCM.Value:      Me!tbCM.Value = 0
 Cells(9, Col).Value = Me!tbDC.Text:             Me!tbDC.Text = "GPE.COM"
 Cells(10, Col).Value = "'" & Me!tbMST.Value:    Me!tbMST.Value = 0
 Cells(11, Col).Value = Me!tbCQ.Text:            Me!tbCQ.Text = "GPE.COM"
MsgBox "Nhâp Xong!", , "GPE.COM Xin Chào!"
End Sub
Ta fải sửa lại như sau:
Dòng lệnh có đánh số 4 sẽ gộp với dòng lệnh dưới nó liền kề;
Khi đó sẽ là vầy:
Mã:
 Cells(4, Col).Value = Me!tbHD.Text & " " & Me!tbTen.Text     'Sửa để nối [tên] vô [họ] '
Me!tbHD.Text = "GPE.COM":              Me!tbTen.Text = "GPE.COM"   'Thay Mới'

Mệnh đề đầu của các dòng lệnh từ dòng 6 trở đi sẽ fải giảm 1 đơn vị
Chúc bạn thành công!
 
Upvote 0
Thay vì:
PHP:
Private Sub CmdLuu_Click()
Dim Col As Byte

 Col = [A2].End(xlToRight).Column + 1
 Cells(2, Col).Value = Me!tbTT.Text:             Cells(3, Col).Value = Me!tbMa.Text
4 Cells(4, Col).Value = Me!tbHD.Text:             Me!tbHD.Text = "GPE.COM"
 Cells(5, Col).Value = Me!tbTen.Text:            Me!tbTen.Text = "GPE.COM"
6 Cells(6, Col).Value = TxtToDate(Me!tbNS.Text):  Me!tbNS.Text = "GPE.COM"
 Cells(7, Col).Value = Me!tbNu.Text:             Me!tbNu.Text = "?"
 Cells(8, Col).Value = "'" & Me!tbCM.Value:      Me!tbCM.Value = 0
 Cells(9, Col).Value = Me!tbDC.Text:             Me!tbDC.Text = "GPE.COM"
 Cells(10, Col).Value = "'" & Me!tbMST.Value:    Me!tbMST.Value = 0
 Cells(11, Col).Value = Me!tbCQ.Text:            Me!tbCQ.Text = "GPE.COM"
MsgBox "Nhâp Xong!", , "GPE.COM Xin Chào!"
End Sub
Ta fải sửa lại như sau:
Dòng lệnh có đánh số 4 sẽ gộp với dòng lệnh dưới nó liền kề;
Khi đó sẽ là vầy:
Mã:
 Cells(4, Col).Value = Me!tbHD.Text & " " & Me!tbTen.Text     'Sửa để nối [tên] vô [họ] '
Me!tbHD.Text = "GPE.COM":              Me!tbTen.Text = "GPE.COM"   'Thay Mới'

Mệnh đề đầu của các dòng lệnh từ dòng 6 trở đi sẽ fải giảm 1 đơn vị
Chúc bạn thành công!
Cám ơn bác rất nhiêu. Nhân tiện em đọc code trong Module có 1 đoạn không hiểu lắm, bác có thể giải thích giúp em không ạ
Mã:
Sub TaoMa3()
 Dim Arr()
 Dim Rws As Long, J As Long, W As Long, Col As Integer, Rw As Integer
 Dim Ma3 As String, Ten, Tmp As String
 
 Sheets("DSKH").Select
 Rws = [C2].CurrentRegion.Rows.Count - 1
 ReDim gArr(1 To Rws, 1 To 1) As String
 Arr() = [C2].Resize(Rws).Value
 For J = 1 To UBound(Arr())
    Ten = TachTen(Arr(J, 1), False)
    If InStr(Ten, " ") Then
        Ma3 = Left(Arr(J, 1), 1) & Left(TachTen(Ten), 1) & Left(TachTen(Arr(J, 1)), 1)
    Else
        Ma3 = Left(Arr(J, 1), 1) & "J" & Left(TachTen(Arr(J, 1)), 1)
    End If
    For Col = 1 To 3
        Tmp = Mid(Ma3, Col, 1)
        If Asc(Tmp) > 90 Then
            Ma3 = Replace(Ma3, Tmp, Application.WorksheetFunction.VLookup(Tmp, Sheets("GPE").Range("CHRW"), 2, False))
        End If
    Next Col
    W = W + 1:              gArr(W, 1) = Ma3 & "00"
 Next J
 [m2].Resize(Rws).Value = gArr()
End Sub

Nếu em bỏ hẳn Hàm này ra thì có ảnh hưởng đến code không? vì em nạp dữ liệu vào 1 chương trình có sẵn, nhưng chương trình này chỉ cho phép lưu dữ liệu theo cột
 
Upvote 0
Nên bỏ nó đi trong file của bạn; Cái này bạn không fải quan tâm tới!
 
Upvote 0
Híc sao mình đưa vào file mình thì nó báo lỗi Out of range
Mã:
Private Sub CmdLuu_Click()
Dim Col As Byte
Worksheets("ShData").Activate
Col = [C2].End(xlToRight).Column + 1
Cells(2, Col).Value = Me!txtDS1.Text:
Cells(4, Col).Value = Me!cbxSohs.Text:
Cells(5, Col).Value = TxtToDate(Me!txtNgayluu.Text):  Me!txtNgayluu.Text = ""
Cells(7, Col).Value = "'" & Me!txtSocongchung.Text:
Cells(8, Col).Value = Me!txtDS1.Value:
Cells(9, Col).Value = Me!txtDiachi.Text:
Cells(10, Col).Value = "'" & Me!txtSodt.Value:
Cells(11, Col).Value = Me!cbxLoaiHD.Text:
MsgBox "Nhâp Xong!", , "GPE.COM Xin Chào!"


End Sub

Bác xem thử giúp mình
 

File đính kèm

Upvote 0
Híc sao mình đưa vào file mình thì nó báo lỗi Out of range
Bác xem thử giúp mình
Xem nổi gì khi chưa biết báo lỗi dòng Code nào? :2:
Xem cái nổi gì khi không có file?:2:

)*&^) )*&^) )*&^)
 
Upvote 0
Srr mình up file lên rồi đó bạn, do đang test nên mình chưa gọi form ra, bạn vào Alt+F11 run giùm mình nhé
 
Upvote 0
Không báo lỗi mới là lạ!

Bạn chưa có trang tính tên 'ShData'; Nhưng trong câu lệnh lại có dòng kích hoạt trang này!

Câu lệnh này sẽ báo lỗi:
Col = [C2].End(xlToRight).Column + 1
Vì ô [C2] trở về mút bên fải đang không có dữ liệu
Nên đổi lại lệnh này thành
Cells(2, Columns.Count).End(xltoLeft).Column +1

& lần sau lưu í file giả lập fải có cấu trúc như file thật của bạn mới xài ngay được;
& mình sẽ không tiếp tục sửa cho bạn nữa đâu; Thà làm mới còn sướng hơn.
Tạm biệt, sau tháng gặp lại!
 
Upvote 0
Không báo lỗi mới là lạ!

Bạn chưa có trang tính tên 'ShData'; Nhưng trong câu lệnh lại có dòng kích hoạt trang này!

Câu lệnh này sẽ báo lỗi:
Col = [C2].End(xlToRight).Column + 1
Vì ô [C2] trở về mút bên fải đang không có dữ liệu
Nên đổi lại lệnh này thành
Cells(2, Columns.Count).End(xltoLeft).Column +1

& lần sau lưu í file giả lập fải có cấu trúc như file thật của bạn mới xài ngay được;
& mình sẽ không tiếp tục sửa cho bạn nữa đâu; Thà làm mới còn sướng hơn.
Tạm biệt, sau tháng gặp lại!
Cám ơn bác đã giúp mình, hiện tại mình vướng chỗ tính tổng các bản sao và bản chính, mình gán code trong VBA
Mã:
Private Sub CmdLuu_Click()
Dim Col As Byte
Dim BC As String
Dim BS As String
Dim Sum As String
Worksheets("DATA").Activate                                 'Con sheet Data de nhap lieu
Col = Cells(2, Columns.Count).End(xlToLeft).Column + 1      'Kiem tra xem cot thu 2 co du lieu chua? chua co chuyen sang cot 3
' kiem tra cac text co du lieu chua
If Trim(Me.cbxKieuHD.Value) = "" Then
  Me.cbxKieuHD.SetFocus
  MsgBox "Chua nhap Kieu Hop Dong"
  Exit Sub
End If
If Trim(Me.cbxNhanvien.Value) = "" Then
  Me.cbxNhanvien.SetFocus
  MsgBox "Chon nhan vien luu ho so"
  Exit Sub
End If
If Trim(Me.txtNgayluu.Value) = "" Then
  Me.txtNgayluu.SetFocus
  MsgBox "Chua nhap Ngay luu"
  Exit Sub
End If
If Trim(Me.txtSocongchung.Value) = "" Then
  Me.txtSocongchung.SetFocus
  MsgBox "Chua nhap So Hop Dong"
  Exit Sub
End If
If Trim(Me.txtDS1.Value) = "" Then
  Me.txtDS1.SetFocus
  MsgBox "Vui long nhap ten Duong Su 1"
  Exit Sub
End If
If Trim(Me.txtDiachi.Value) = "" Then
  Me.txtDiachi.SetFocus
  MsgBox "Vui long nhap ten Dia chi khach hang"
  Exit Sub
End If

'*******Copy du lieu chuyen vao sheet**************
Cells(2, Col).Value = Me!txtDS1.Text:
Cells(4, Col).Value = Me!cbxKieuHD.Text:
Cells(5, Col).Value = TxtToDate(Me!txtNgayluu.Text):
Cells(6, Col).Value = Me!cbxNhanvien.Text:
Cells(7, Col).Value = "Ngày " & Day(TxtToDate(Me!txtNgayluu.Text)) & " " & " tháng " & " " & Month(TxtToDate(Me!txtNgayluu.Text)) & " n" & ChrW(259) & "m " & Year(TxtToDate(Me!txtNgayluu.Text)):
Cells(8, Col).Value = "'" & Me!txtSocongchung.Text:
Cells(9, Col).Value = Me!txtDS1.Text:
Cells(10, Col).Value = Me!txtDiachi.Text:
Cells(11, Col).Value = "'" & Me!txtSodt.Value:
Cells(12, Col).Value = Me!cbxLoaiHD.Text:
Cells(13, Col).Value = Me!txtDS2.Text:
Cells(14, Col).Value = Me!txtDS3.Text:
Cells(15, Col).Value = Me!txtDS4.Text:
Cells(16, Col).Value = Me!txtDS5.Text:
Cells(17, Col).Value = Me!txtDS6.Text:
Cells(18, Col).Value = Me!txtDS7.Text:
Cells(19, Col).Value = Me!txtDS8.Text:
Cells(20, Col).Value = Me!txtDS9.Text:
Cells(21, Col).Value = Me!txtDS10.Text:
Cells(22, Col).Value = Me!txtDS11.Text:
Cells(23, Col).Value = Me!txtBL2.Text:
Cells(24, Col).Value = Me!cbxGT2.Text:
Cells(25, Col).Value = Me!txtBC2.Value:
Cells(26, Col).Value = Me!txtBS2.Value:
Cells(27, Col).Value = Me!txtBL3.Text:
Cells(28, Col).Value = Me!cbxGT3.Text:
Cells(29, Col).Value = Me!txtBC3.Value:
Cells(30, Col).Value = Me!txtBS3.Value:
Cells(31, Col).Value = Me!txtBL4.Text:
Cells(32, Col).Value = Me!cbxGT4.Text:
Cells(33, Col).Value = Me!txtBC4.Value:
Cells(34, Col).Value = Me!txtBS4.Value:
Cells(35, Col).Value = Me!txtBL5.Text:
Cells(36, Col).Value = Me!cbxGT5.Text:
Cells(37, Col).Value = Me!txtBC5.Value:
Cells(38, Col).Value = Me!txtBS5.Value:
Cells(39, Col).Value = Me!txtBL6.Text:
Cells(40, Col).Value = Me!cbxGT6.Text:
Cells(41, Col).Value = Me!txtBC6.Value:
Cells(42, Col).Value = Me!txtBS6.Value:
Cells(43, Col).Value = Me!txtBL7.Text:
Cells(44, Col).Value = Me!cbxGT7.Text:
Cells(45, Col).Value = Me!txtBC7.Value:
Cells(46, Col).Value = Me!txtBS7.Value:
Cells(47, Col).Value = Me!txtBL8.Text:
Cells(48, Col).Value = Me!cbxGT8.Text:
Cells(49, Col).Value = Me!txtBC8.Value:
Cells(50, Col).Value = Me!txtBS8.Value:
Cells(51, Col).Value = Me!txtBL9.Text:
Cells(52, Col).Value = Me!cbxGT9.Text:
Cells(53, Col).Value = Me!txtBC9.Value:
Cells(54, Col).Value = Me!txtBS9.Value:
BC = CDbl(Me!txtBC9) + CDbl(Me!txtBC8) + CDbl(Me!txtBC7) + CDbl(Me!txtBC6) + CDbl(Me!txtBC5) + CDbl(Me!txtBC4) + CDbl(Me!txtBC3) + CDbl(Me!txtBC2) + 1:
BC = CDbl(Me!txtBS9) + CDbl(Me!txtBS8) + CDbl(Me!txtBS7) + CDbl(Me!txtBS6) + CDbl(Me!txtBS5) + CDbl(Me!txtBS4) + CDbl(Me!txtBS3) + CDbl(Me!txtBS2):
Sum = CDbl(BS) + CDbl(BC)
Cells(55, Col).Value = BC:
Cells(56, Col).Value = BS:
Cells(57, Col).Value = Sum:
Cells(58, Col).Value = TxtToDate(Me!txtNgayPH2.Text):
Cells(59, Col).Value = TxtToDate(Me!txtNgayPH3.Text):
Cells(60, Col).Value = TxtToDate(Me!txtNgayPH4.Text):
Cells(61, Col).Value = TxtToDate(Me!txtNgayPH5.Text):
Cells(62, Col).Value = TxtToDate(Me!txtNgayPH6.Text):
Cells(63, Col).Value = TxtToDate(Me!txtNgayPH7.Text):
Cells(64, Col).Value = TxtToDate(Me!txtNgayPH8.Text):
Cells(65, Col).Value = TxtToDate(Me!txtNgayPH9.Text):
'*******Ket thuc nhap lieu****************
MsgBox "Nhâp Xong!", , "Thông báo!"

'xóa du lieu tren form
Me.txtDS1.Value = ""
Me.cbxKieuHD.Value = ""
Me.txtNgayluu.Value = ""
Me.cbxNhanvien.Value = ""
Me.txtSocongchung.Value = ""
Me.txtDS1.Value = ""
Me.txtDiachi.Value = ""
Me.txtSodt.Value = ""
Me.cbxLoaiHD.Value = ""
Me.txtDS2.Value = ""
Me.txtDS3.Value = ""
Me.txtDS4.Value = ""
Me.txtDS5.Value = ""
Me.txtDS6.Value = ""
Me.txtDS7.Value = ""
Me.txtDS8.Value = ""
Me.txtDS9.Value = ""
Me.txtDS10.Value = ""
Me.txtDS11.Value = ""
Me.txtBL2.Value = ""
Me.cbxGT2.Value = ""
Me.txtBC2.Value = ""
Me.txtBS2.Value = ""
Me.txtBL3.Value = ""
Me.cbxGT3.Value = ""
Me.txtBC3.Value = ""
Me.txtBS3.Value = ""
Me.txtBL4.Value = ""
Me.cbxGT4.Value = ""
Me.txtBC4.Value = ""
Me.txtBS4.Value = ""
Me.txtBL5.Value = ""
Me.cbxGT5.Value = ""
Me.txtBC5.Value = ""
Me.txtBS5.Value = ""
Me.txtBL6.Value = ""
Me.cbxGT6.Value = ""
Me.txtBC6.Value = ""
Me.txtBS6.Value = ""
Me.txtBL7.Value = ""
Me.cbxGT7.Value = ""
Me.txtBC7.Value = ""
Me.txtBS7.Value = ""
Me.txtBL8.Value = ""
Me.cbxGT8.Value = ""
Me.txtBC8.Value = ""
Me.txtBS8.Value = ""
Me.txtBL9.Value = ""
Me.cbxGT9.Value = ""
Me.txtBC9.Value = ""
Me.txtBS9.Value = ""
Me.cbxKieuHD.SetFocus
End Sub

Thì bị báo lỗi "Run-time error '13': Type Mismatch " bạn có thể giúp mình sửa được không? báo lỗi ngay dòng đầu chỗ này:
Mã:
BC = CDbl(Me!txtBC9) + CDbl(Me!txtBC8) + CDbl(Me!txtBC7) + CDbl(Me!txtBC6) + CDbl(Me!txtBC5) + CDbl(Me!txtBC4) + CDbl(Me!txtBC3) + CDbl(Me!txtBC2) + 1:
BC = CDbl(Me!txtBS9) + CDbl(Me!txtBS8) + CDbl(Me!txtBS7) + CDbl(Me!txtBS6) + CDbl(Me!txtBS5) + CDbl(Me!txtBS4) + CDbl(Me!txtBS3) + CDbl(Me!txtBS2):
Sum = CDbl(BS) + CDbl(BC)
 
Upvote 0
Vậy bạn cho biết bạn nhập gì trên các TextBox có trong dòng lệnh đó, như
Me!txtBC9; Me!txtBC8; Me!txtBC7; . . . Me!txtBC2
(Là 35.35 hay 35,35 ?)

Mà bạn hình như đang xen ngang chính trên bài đăng của mình;
 
Upvote 0
Mình chỉ nhập số nguyên thôi ví dụ "35", nhưng có những textbox không có dữ liệu (rỗng), mặc dù dùng CDbl để chuyển sang dạng số nhưng nó vẫn báo lỗi T"ype Mismatch"
 
Upvote 0
Web KT

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

Back
Top Bottom