Đưa dữ liệu từ Form như trong File này ra bảng Cell như thế nào?

Liên hệ QC

khoavu87

Vũ Trần Khoa
Tham gia
5/3/09
Bài viết
1,311
Được thích
1,769
Nghề nghiệp
Kỹ Sư Xây dựng cầu đường
Em có file này mà ngồi làm mãi vẫn chưa được , nên gửi lên diễn đàn nhờ mọi người giúp em vấn đề này.
Câu hỏi em ghi luôn trong file rồi a.
Em cảm ơn ạ.
 
Chuyện nhập thì là chuyện nhỏ như con thỏ, chỉ chết nỗi chẳng biết nhập gì vào vì bọn mình không phải dân kỹ thuật. Đoc hướng dẫn chả hiểu gì cả!!!
 
Upvote 0
Chuyện nhập thì là chuyện nhỏ như con thỏ, chỉ chết nỗi chẳng biết nhập gì vào vì bọn mình không phải dân kỹ thuật. Đoc hướng dẫn chả hiểu gì cả!!!
Em nói rõ hơn một chút.
Em mô tả lại chút nữa.em mô tả qua ba cái ảnh đó ạ.Cảm ơn anh nhiều vì đã quan tâm đến chủ đề .
View attachment 44232
View attachment 44233
View attachment 44234
Và em gửi luôn dữ liệu em mô tả trên file.
 
Upvote 0
Bạn thay thử và hiệu chỉnh cho đúng số cột xem sao (Vì mình đoán)
PHP:
Private Sub cmdUpdate_Click()
Dim dg, lop
With Sheet1
lop = Int(Me.txtDay / Me.txtDayPL)
dg = .[d56536].End(xlUp).Row
For i = 1 To lop
.Cells(dg + i, 2) = IIf(i = 1, Me.txtTen, "")
.Cells(dg + i, 3) = IIf(i = 1, Me.txtDay, "")
.Cells(dg + i, 4) = Me.txtDayPL
.Cells(dg + i, 6) = Me.txtGamma
.Cells(dg + i, 7) = Me.txteo
.Cells(dg + i, 8) = Me.txtCv
.Cells(dg + i, 8) = Me.txtCc
'---------------------Ban bo xung cho du
Next
End With
    Unload Me
End Sub
P/s: Các ô số bạn nên dùng hàm val() chuyển đổi trước khi nhập vào sheet
 
Lần chỉnh sửa cuối:
Upvote 0
Vấn đề ở đây là khoavu phải tìm hiểu về property End của range. Từ đó xác định được dòng cuối để gán dữ liệu vào dòng tiếp theo.
Trong vài bài VBA của Khoa gần đây, do không biết xác định dòng cuối nên đã dùng For duyệt tất cả các cells, đến khi gặp ô trống thì dừng. Rất chậm!
Vấn đề thứ 2, là nếu form đầu xác định là 2 trở lên, thì form thứ 2 xuất hiện 2 lần. Điều đó thì đúng, nhưng mỗi lần như vậy trước khi xoá để điền giá trị lần 2, thì phải gán lần 1 xuống sheet.
 
Lần chỉnh sửa cuối:
Upvote 0
Vấn đề ở đây là khoavu phải tìm hiểu về property End của range. Từ đó xác định được dòng cuối để gán dữ liệu vào dòng tiếp theo.
Trong vài bài VBA của Khoa gần đây, do không biết xác đ5nh còng cuối nên đã dùng For duyệt tất cả các cells, đến khi gặp ô trống thì dừng. Rất chậm!
Vấn đề thứ 2, là nếu form đầu xác định là 2 trở lên, thì form thứ 2 xuất hiện 2 lần. Điều đó thì đúng, nhưng mỗi lần như vậy trước khi xoá để điền giá trị lần 2, thì phải gán lần 1 xuống sheet.
vâng đúng ạ, vì em cũng lần mò tìm hiểu VBA nên chưa hiểu về property End của range của sư phụ nói nên làm mãi không được.Sư phụ có link nào nói về property End của range có thể gửi Cho em tham khảo được ko ạ?
- thì form thứ 2 xuất hiện 2 lần. Điều đó thì đúng, nhưng mỗi lần như vậy trước khi xoá để điền giá trị lần 2, thì phải gán lần 1 xuống sheet
em chưa hiểu lắm ạ. Mong Sư phụ Bổ sung thêm kiến thức nghèo nàn của em với ạ. Em chân thành cảm ơn

PM:
Em cảm ơn Sư Phụ, một bài viết thật là tuyệt đã giúp em mở rộng thêm kiến thức.
Cảm ơn Sư phụ Ndu đã góp ý cho em.một ý tưởng cũng rất hay.
 
Lần chỉnh sửa cuối:
Upvote 0
.Sư phụ có link nào nói về property End của range có thể gửi Cho em tham khảo được ko ạ?
Cái này tự record macro mà tìm hiểu, ví dụ bạn có dữ liệu tại cột A, giờ bạn làm như sau:
- Bật record macro lên
- Đặt con trỏ tại cell A65536 rồi bấm Ctrl + mũi tên lên, bạn sẽ thấy nó chọn cell cuối cùng có dữ liệu tại cột A
- Tắt record macro và xem code
-------------------------
Ngoài ra, với fille trên sao khoavu không thiết kế chung 1 form thôi (2 form chi cho rối)
 
Upvote 0
1. Thuộc tính (property) end có đầy trên diễn đàn.
2. Khai báo trong form thứ nhất là 2 bộ dữ liệu, thì phải gán xuống sheet 2 lần, chứ sao? Có gì mà không hiểu?
 
Upvote 0
Bạn thay thử và hiệu chỉnh cho đúng số cột xem sao (Vì mình đoán)
PHP:
Private Sub cmdUpdate_Click()
Dim dg, lop
With Sheet1
lop = Int(Me.txtDay / Me.txtDayPL)
dg = .[d56536].End(xlUp).Row
For i = 1 To lop
.Cells(dg + i, 2) = IIf(i = 1, Me.txtTen, "")
.Cells(dg + i, 3) = IIf(i = 1, Me.txtDay, "")
.Cells(dg + i, 4) = Me.txtDayPL
.Cells(dg + i, 6) = Me.txtGamma
.Cells(dg + i, 7) = Me.txteo
.Cells(dg + i, 8) = Me.txtCv
.Cells(dg + i, 8) = Me.txtCc
'---------------------Ban bo xung cho du
Next
End With
    Unload Me
End Sub
P/s: Các ô số bạn nên dùng hàm val() chuyển đổi trước khi nhập vào sheet
Anh sealand ơi khi em chạy cái của anh thì phát sinh một vấn đề là :
1/ thông số cho lớp đất:
ví dụ : Em nhập số lớp đất là 2
* Nhập bề dày lớp đất 1 là 12 m,độ dày mỗi phân lớp là 1m thì kết quả trên bảng cell chỉ thi đc 11 dòng CD phân lớp ( mà đáng lẽ phải là 12 dòng)
+ Với lớp đất 1 thì ko hiện lên Tên lớp đất và chiều Dày lớp đất.
* Lớp thứ hai thì mới hiện tên lớp, chiều dày và số dòng chuẩn xác. Vậy anh có cách nào khắc phục nó ko ạ?
 
Lần chỉnh sửa cuối:
Upvote 0
Chẳng có lý do gi để Merge 2 dòng 5 và 6 làm tiêu đề cả. Bạn gõ ở dòng 5 thì VBA vẫn cho dòng 6 là dòng trống.
Khắc phục bỏ Merge đi là được.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom