cần xin code vba cho bảng nhập liệu mong các cao thủ trợ giúp

  • Thread starter Deleted member 547
  • Ngày gửi
D

Deleted member 547

Guest
em có file nhập dữ liệu đơn giản như trên, em muốn nhờ các anh chị giải đáp vài vấn đề ạ
1 em muốn ấn vào dòng chữ "NHAP DU LIEU" ở userform dữ liệu mới được cập nhật vào bảng tính excel , hiện tại nếu chọn dữ liệu ở textbox và combobox dữ liệu hiện luôn trên bảng excel
2. vì xao ở textbox em nhập là số , căn lề phải rồi , khi nhập xong. con số hiện ở bảng excel lại là định dạng text. dùng hàm sum test thì không ra kết quả , ==> em muốn kết quả ở ô số tiền là định dạng số.
3. làm thế nào để nhập tên tài khoản và số dư đầu kỳ ở sheet "caidat" thì ở sheet "chitiet" tự động hiện tên tài khoản và số dư đầu kỳ lên " và tổng thu tổng chi của tài khoản đó ,
em mới học nên gà mờ quá không biết làm rất mong nhận được sự giúp đỡ từ mọi người
em xin chân thành cảm ơn
 
D

Deleted member 547

Guest
xao không ai giúp đỡ vậy
 
H

haokira

Guest
Tôi cũng hay đăng bài để hỏi, nhưng tôi biết ai cũng cần làm việc để đảm bảo miếng cơm của mình. Bạn nên bình tĩnh, nếu gấp có thể làm dịch vụ thì sẽ nhanh.
 
D

Deleted member 547

Guest
excel cannot open the file because the file format or file extension is not valid
bạn chọn save as sau đó chọn đuôi xlsm là có thể xem được , hoặc tải file xlsm của mình về nhé . cảm ơn nhiều
 
bạn chọn save as sau đó chọn đuôi xlsm là có thể xem được , hoặc tải file xlsm của mình về nhé . cảm ơn nhiều
Mình đã xem UF của bạn rồi. sẽ sửa giúp. Nhưng tại giờ đang bận xíu. chưa làm ngay được. Bạn gắng chờ 1 xíu nhé
 
D

Deleted member 547

Guest
Mình đã xem UF của bạn rồi. sẽ sửa giúp. Nhưng tại giờ đang bận xíu. chưa làm ngay được. Bạn gắng chờ 1 xíu nhé
thank you . mình có thể xin zalo ,face hay bất cứ phưong thức liên lạc nào của bạn được không
 
thank you . mình có thể xin zalo ,face hay bất cứ phưong thức liên lạc nào của bạn được không
đang định hỏi.có gì bạn skype cho mình đi. còn không thì bạn cố gắng chờ ở topic này xíu, rồi mọi người vào cùng thảo luận: kib.pc.quangthuan
 
V

vothanhthu

Guest
Do mình đang đi công tác nên mình sẽ làm giúp bạn trả lời 2 câu hỏi đầu trước nhé.

Câu 1: Do code của bạn là dạng Change từng Textbox,Combobox nên khi bạn chọn và thay đổi data một Textbox, Combobox nào đó thì dữ liệu nó tự động Add vào bảng tính luôn. Cách giải quyết là bạn cho hết code vào 1 nút "Nhập dữ liệu", khi nhấn nó thì code mới được thực thi, vậy là Oke.

Câu 2: Nguyên nhân là do bạn đã không thêm thuộc tính .Value sau Textbox. Bạn nên thêm vào thuộc tính gì khi lấy data từ Textbox hay Combobox nhé. Thêm vô là Oke
Mã trước khi thêm
Mã:
Sheets("thuchi").Range("a4").Offset(hangcuoi, 4).Value = TextBox_sotien
Mã sau khi thêm
Mã:
Sheets("thuchi").Range("a4").Offset(hangcuoi, 4).Value = TextBox_sotien.Value
Câu 3: Mình thấy dạng dạng này như dạng thống kê lại những dữ liệu mà bạn đã nhập nên mình nghĩ cái này có thể dùng PivotTable để giải quyết. Không biết mình nghĩ đúng không, Nếu đúng thì bạn comment cho mình biết nào công tác về mình sẽ làm giúp bạn (Nếu chưa có bạn nào làm) !
 
Sửa lần cuối bởi điều hành viên:

tuhocvba

Administrator
Thành viên BQT
Một là viết sai chính tả. Làm sao , chứ không phải Làm xao.
Hai là bài không chú thích hình ảnh minh họa dễ hiểu.
Những người trên diễn đàn này đều bận rộn, họ sẽ không download file để hiểu vấn đề.
Bạn hãy tham khảo các topic hỏi đáp khác.
Bài chưa bị xóa là may lắm rồi.
 
D

Deleted member 547

Guest
cảm ơn anh nhiều nhé , em loay hoay mấy ngày trời mà không biết làm xao . chỉ vài câu của anh giải quyết được vấn đề luôn :v
anh ơi khi nào anh rảnh chỉ em mấy chỗ còn lại với nhé . em cảm ơn ạ
 
V

vothanhthu

Guest
anh ơi khi nào anh rảnh chỉ em mấy chỗ còn lại với nhé . em cảm ơn ạ
Mình muốn hỏi lại chút. Giờ nếu bạn nhập thông tin tại sheet caidat. thì thông tin bên sheet chitiet tự động lấy qua. Rồi khi xóa dữ liệu bên sheet caidat thì bên chitiet có mất theo không hay là cố định luôn nhỉ?

Mình sẽ giả sử cả 2 trường hợp gợi ý cho bạn:
Trường hợp 1 - Xóa bên caidat thì chitiet mất luôn: trường hợp này đơn giản bạn chỉ cần lấy 2 bên bằng với nhau rồi công thức chổ tổng thu tại [D5] sẽ là
Mã:
=IFERROR(SUMIF(thuchi!B:B,B5,thuchi!H:H),"")
tương tự với tổng chi

Trường hợp 2 - Xóa bên cài đặt nhưng bên chitiet vẫn còn: Do dữ liệu bạn nhập là trực tiếp trên dữ liệu bảng tính, nên khi bạn nhập tay thì bên chitiet không thể biết được lúc nào là cần liên kết, lúc nào cần giữ nguyên số khi xóa, nên bạn phải tạo một khâu trung gian ở giữa đoạn. Đơn giản nhất là bạn tạo một Userform giống như Userform nhập liệu của bạn, khi nhập thì cả 2 bên điều có dữ liệu nên khi xóa một trong 2 thì không ảnh hưởng đến bên còn lại. Hoặc bạn tạo một nút xóa đặc biệt, khi nhấn vào thì dữ liệu bên chitiet sẽ được cố định dạng value, bên caidat thì xóa data, sao đó lặp công thức liên kết lại cho ô trống cuối có chứa dữ liệu bên chitiet bằng VBA (dùng Record macro ghi lại các công thức cho dễ).

Mình thấy khả năng code của bạn trong file trước mình tin bạn hoàn toàn có thể làm được bài này. Nếu có khó khăn cứ cho mình biết mình sẽ hướng dẫn kỹ hơn !
 
Sửa lần cuối bởi điều hành viên:
D

Deleted member 547

Guest
anh ơi cho em hỏi code dán vào chỗ nào để nó tự động chạy mà không phải ấn nút play ạ .
ý em là ở sheet cai dat cột tên tài khoản em nhập "NGUYỄN VĂN A" thì ở sheet chitiet ở cột tên tài khoản cũng tự động điền vào là "NGUYỄN VĂN A"
và ở cột số dư đầu kỳ cũng vậy ạ . em dùng vòng lặp với công thức như sau thì không được . lúc nào rảnh anh giúp em với em cảm ơn
sub tudongdiendulieu()
dim a as interger
for a = 1 to 100
if sheets("caidat").range("b5" & a) = text then
sheets("chitiet").range("b5") = sheets("caidat").range("b5")
next a
 
V

vothanhthu

Guest
ý em là ở sheet cai dat cột tên tài khoản em nhập "NGUYỄN VĂN A" thì ở sheet chitiet ở cột tên tài khoản cũng tự động điền vào là "NGUYỄN VĂN A"
và ở cột số dư đầu kỳ cũng vậy ạ .
Vậy bạn để hàm 2 bên = nhau là được rồi chứ nhỉ?. Như trường hợp 1 mình đề cập. Xem thử file mình.

P/s: Code thiếu End if kìa quê
 
Sửa lần cuối bởi điều hành viên:

tuhocvba

Administrator
Thành viên BQT
Thành viên @nguyễn dũng hãy giành thời gian tìm hiểu cách post bài trên diễn đàn.
Code VBA phải để trong thẻ [ Code ].
Topic này sẽ di chuyển vào mục giúp nhau trình bày cho dễ hiểu.
 
D

Deleted member 547

Guest
cảm ơn anh nhiều . em hoàn thiện 99% rồi ,còn 1 xíu nữa là xong thôi . em còn 1 vấn đề nhỏ muốn nhờ anh giải đáp. ví dụ combobox của em chọn rowsoure từ ô A1 đến ô A100 , nhưng hiện tại dữ liệu của em mới chỉ điền đến ô A10 thôi , những ô còn lại chưa điền . vậy cài đặt như thế nào để khi ấn vào combobox chỉ hiện lên những ô tính đã điền dữ liệu thôi ạ. hiện tại combobox của em cả những ô chưa điền dữ liệu cũng bị chèn vào . là những khoảng trắng , nhìn rất khó chịu ạ
 
V

vothanhthu

Guest
cảm ơn anh nhiều . em hoàn thiện 99% rồi ,còn 1 xíu nữa là xong thôi . em còn 1 vấn đề nhỏ muốn nhờ anh giải đáp. ví dụ combobox của em chọn rowsoure từ ô A1 đến ô A100 , nhưng hiện tại dữ liệu của em mới chỉ điền đến ô A10 thôi , những ô còn lại chưa điền . vậy cài đặt như thế nào để khi ấn vào combobox chỉ hiện lên những ô tính đã điền dữ liệu thôi ạ. hiện tại combobox của em cả những ô chưa điền dữ liệu cũng bị chèn vào . là những khoảng trắng , nhìn rất khó chịu ạ
Cho cái code này vào UserForm là oke nhé, Code này sẽ khởi tạo giá trị cho Combobox mỗi khi Userform được mở lên.
Mã:
Private Sub UserForm_Initialize()
Dim LastRow as long
'Lấy giá trị dòng cùng cuối cột A
LastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row
'Combobox1 sẽ lấy từ A1 đến A:LastRow (Dòng cuối cột A)
ComboBox1.RowSource = Range("A1:A" & LastRow).Address
End Sub
 
Top