Điều kiện nhập liệu cho textbox trong Userform.

Liên hệ QC

nhoklipice

Thành viên hoạt động
Tham gia
17/3/09
Bài viết
112
Được thích
3
Trên 1 form có 4 textbox 1 2 3 4 bắt buộc nhập.

Nếu textbox1 có dữ liệu ngày tháng + textbox2 trống thì popup "ban chua nhap textbox2" và setforcus tai textbox2.

Nếu textbox1 có dữ liệu ngày tháng + textbox2 có tên, textbox3 trống thì popup "ban chua nhap textbox3" và setforcus tai textbox3.

Nếu textbox1 có dữ liệu ngày tháng + textbox2 có tên + textbox3 có tên, thì popup "ban chua nhap textbox3" và setforcus tai textbox3.

Nếu textbox1 có dữ liệu ngày tháng + textbox2 có tên + textbox3 có tên, extbox4 trống, thì popup "ban chua nhap textbox4" và setforcus tai textbox4.

Xin cảm ơn !
 
Có chút xíu thôi mà tìm không ra =.=
Xin gởi kèm file, nhờ mọi người giúp, không giám mở topic mới, post luôn trong đây.
Cảm ơn mọi người.
 

File đính kèm

  • combobox.xls
    32 KB · Đọc: 9
Upvote 0
Có chút xíu thôi mà tìm không ra =.=
Xin gởi kèm file, nhờ mọi người giúp, không giám mở topic mới, post luôn trong đây.
Cảm ơn mọi người.

Chán bạn thiệt đó! Đơn giản vậy mà cũng không làm được! Sao không dựa vào bài cũ rồi chỉnh sửa một chút thôi?

Thôi, làm luôn cho bạn nè! Cố gắng tìm hiểu, mày mò hơn nữa nhé!

Mã:
Private Sub UserForm_Initialize()
    TextBox1 = Date
    With Sheets("Data")
        ComboBox1.List = Range(.[A2], .[C65536].End(xlUp)).Value
    End With
End Sub

Private Sub TextBox1_Change()
    Call CmdEnble
End Sub

Private Sub TextBox4_Change()
    Call CmdEnble
End Sub

Private Sub ComboBox1_Change()
    On Error GoTo Loi
    TextBox2 = ComboBox1.List(, 1)
    TextBox3 = ComboBox1.List(, 2)
    Call CmdEnble
    Exit Sub
Loi:
    TextBox2 = ""
    TextBox3 = ""
    CommandButton1.Enabled = False
End Sub

Private Sub CommandButton1_Click()
    With Sheets("Sheet1").Range("A65536").End(xlUp).Offset(1)
        .Value = ComboBox1
        .Offset(, 1) = TextBox2
        .Offset(, 2) = TextBox3
        .Offset(, 3) = Val(TextBox4)
    End With
    ComboBox1 = "": TextBox4 = ""
    ComboBox1.SetFocus
End Sub

Private Sub CommandButton2_Click()
    Unload Me
End Sub

Private Sub CmdEnble()
    If TextBox4 = "" Or ComboBox1 = "" Then
        CommandButton1.Enabled = False
    Else
        CommandButton1.Enabled = True
    End If
End Sub
 

File đính kèm

  • combobox(2).xls
    50.5 KB · Đọc: 60
Upvote 0
Mới làm quen vba được 3 - 4 ngày thôi ^.^, thx bạn đã giúp đỡ.
 
Upvote 0
To : Hoàng Trọng Nghĩa và ai có thời gian rảnh.
Chết - chết - chết rồi, cái form đặt hàng bạn viết trước [ 16.10.2012 version2 ] dòng thành tiền : vnd() nó không tự update, vd đơn hàng trước hàm vnd đang là sáu triệu đồng, đơn hàng sau là ba triệu đồng, khi in nó vẫn in là sáu triệu đồng, khi thoát form nó mới chịu update ba triệu đồng => sai, tạm thời mình đang cho dòng code đó không hiệu lực, nếu bạn có ghé qua đây thì xem giúp mình chút, thx bạn .
 
Upvote 0
To : Hoàng Trọng Nghĩa và ai có thời gian rảnh.
Chết - chết - chết rồi, cái form đặt hàng bạn viết trước [ 16.10.2012 version2 ] dòng thành tiền : vnd() nó không tự update, vd đơn hàng trước hàm vnd đang là sáu triệu đồng, đơn hàng sau là ba triệu đồng, khi in nó vẫn in là sáu triệu đồng, khi thoát form nó mới chịu update ba triệu đồng => sai, tạm thời mình đang cho dòng code đó không hiệu lực, nếu bạn có ghé qua đây thì xem giúp mình chút, thx bạn .

Chết cái gì mà chết! Bạn đưa cái code tính tiền của bạn lên đây đi rồi tôi tính tiếp cho bạn! Vì không có hàm đó nên tôi bỏ ngỏ vậy thôi!
 
Upvote 0
LINK DOWNLOAD FILE
(giaiphapexcel.com/forum/attachment.php?attachmentid=90840&d=1350653660)
(Là cái form bữa trước bạn làm đó)

Lần cuối cùng, tôi nói bạn gửi cái file thật của bạn lên đi, bản thân bạn không rõ gì về code mà cứ tự copy, sao chép, import, export ... hoàn toàn giống cấu trúc thì không sao, còn khác địa chỉ ô hay hàng, cột thì không thể thực hiện đúng đâu!

Bạn gửi cái file của tôi làm chi! Tôi nói rằng bạn gửi cái HÀM TÍNH VIỆT NAM ĐỒNG của bạn! Tôi nói tiếng Việt bạn không hiểu à?
 
Upvote 0
file.xls - Your file of 139.5 KB bytes exceeds the forum's limit of 97.7 KB for this filetype
tự nhiên điễn đàn giới hạn file xls còn 97.7kb, bữa trước up ngon lành giờ chẳng hiệu tại sao, thôi nén lại cho rồi.
 

File đính kèm

  • file.rar
    44.8 KB · Đọc: 32
Upvote 0
file.xls - Your file of 139.5 KB bytes exceeds the forum's limit of 97.7 KB for this filetype
tự nhiên điễn đàn giới hạn file xls còn 97.7kb, bữa trước up ngon lành giờ chẳng hiệu tại sao, thôi nén lại cho rồi.

Tôi chán bạn ghê, thôi được, nếu bạn không gửi lên được cái addins VND của bạn (về chuyện đọc số ra chữ, diễn đàn này có hằng hà sa số!) thì bạn nên làm như sau:

Tôi nhớ, với nút lệnh SAVE (CmdSave_Click) có "thòng" sẳn cho bạn một đoạn code này:

Mã:
 [COLOR=#008000]           'Neu muon VBA xu ly truc tiep ham VND thi dung code duoi:
            [B]'[D29] = VND(NumRes(TextBox9))[/B]
[/COLOR]

Thì bạn chỉ việc bỏ dấu nháy và sửa lại D29 thành D24 thôi, có gì khó cho bạn không?

Mã:
[B][COLOR=#0000cd][D24] = VND(NumRes(TextBox9))[/COLOR][/B]

Nguyên do nó không Update được hàm chẳng qua nó bị chặn tính toán do load form có thủ tục Call AppFast thôi, có thủ tục này thì chương trình sẽ chạy nhanh hơn, không bị chớp, sau khi thoát form lại có thủ tục Call UnAppFast để trả lại như cũ. Vì thế, đã làm VBA rồi thì đừng để nó tính trên sheet, cứ cho nó tính trực tiếp trên form luôn đi, sau đó nó tự nhập vào.
 
Lần chỉnh sửa cuối:
Upvote 0
mình có thử sử sụng code dòng vnd,
'[D29] = VND(NumRes(TextBox9))
nhưng form cứ báo lỗi và bôi đen chữ VND.
đính kèm file vnd.
 

File đính kèm

  • AccHelper.rar
    148.6 KB · Đọc: 12
Upvote 0
mình có thử sử sụng code dòng vnd,
'[D29] = VND(NumRes(TextBox9))
nhưng form cứ báo lỗi và bôi đen chữ VND.
đính kèm file vnd.
Xin cho hỏi bạn xài file này của Anh Nguyễn Duy Tuân phải không vậy? Không lý nào tự nhiên xài trên sheet được mà không thể xài trực tiếp trên form được!
 
Upvote 0
mình có thử sử sụng code dòng vnd,
'[D29] = VND(NumRes(TextBox9))
nhưng form cứ báo lỗi và bôi đen chữ VND.
đính kèm file vnd.

Tạm thời, file của bạn nhập cũng không nhiều, tính toán cũng không bao nhiêu, bạn thêm dấu nháy vào Call AppFast đi nhé để nó không hoạt động, đồng thời tại ô D22 bạn cứ dùng hàm trong sheet bình thường, sẽ không bị tính sau khi in nữa!
 
Upvote 0
Cảm ơn bạn đã hướng dẫn, chúc sức khỏe.
 
Upvote 0
Nếu bạn dùng thư viện acchelper.xll để lập trình VBA thì file acchelper.xll nên để tại c:\windows\system32\ Đây là nguyên tắc chung khi dùng hàm trong thư viện xll/dll. Nếu Windows XP thì thư viện có thể để chung thư mục của chương trình.
Lưu ý là bạn phải khai bái hàm VND bởi Declare...theo file hướng dẫn trong thư mục add-in nhé.
 
Lần chỉnh sửa cuối:
Upvote 0
To : Bạn Nghĩa ( nếu có ghé qua đây )
bản 16-10-2012 version 2 (mới nhất), khi mình nhập mã pt, thì tên pt + số tiền tự động điền theo, có cách nào vẫn tự động điền số tiền vừa có thể chỉnh sửa số tiền được không nhỉ ?
vd, phụ tùng a, tự động tìm giá là 99.000 đồng, mình muốn sửa thành 100.000 đồng ngay trong ô số tiền.
Nếu bạn rảnh thì giúp với, nhưng đừng có .. nóng :D, trình độ người tự học vba 1 tuần thì chưa làm gì đc đâu ^.^
 
Upvote 0
To : Bạn Nghĩa ( nếu có ghé qua đây )
bản 16-10-2012 version 2 (mới nhất), khi mình nhập mã pt, thì tên pt + số tiền tự động điền theo, có cách nào vẫn tự động điền số tiền vừa có thể chỉnh sửa số tiền được không nhỉ ?
vd, phụ tùng a, tự động tìm giá là 99.000 đồng, mình muốn sửa thành 100.000 đồng ngay trong ô số tiền.
Nếu bạn rảnh thì giúp với, nhưng đừng có .. nóng :D, trình độ người tự học vba 1 tuần thì chưa làm gì đc đâu ^.^

Tại TextBox đó, bạn chỉ cần chọn thuộc tính Lock là False được rồi.
 
Upvote 0
Nhờ mọi người chỉ giúp code này sao chạy nửa vời vầy nè.
Data trong combobox1 có mã nhận, mã không nhận.
vd: data trong combobox1 điển hình có 2 mã 31200ktf987 và 31201187701, khi đánh 31200ktf987 thì nhận, nhưng 31201187701 thì không nhận, các mã sau thì lại nhận đầy đủ, 1 khúc sau nữa lại không nhận, mong mọi người chỉ các khắc phục. Cảm ơn mọi người.
Các mã bắt đầu với 96xxx thì nhận, nhưng 961xxx lại không nhận ... 31201187701 không nhận.
 

File đính kèm

  • ko nhan ma.rar
    175.5 KB · Đọc: 16
Upvote 0
Nhờ mọi người chỉ giúp code này sao chạy nửa vời vầy nè.
Data trong combobox1 có mã nhận, mã không nhận.
vd: data trong combobox1 điển hình có 2 mã 31200ktf987 và 31201187701, khi đánh 31200ktf987 thì nhận, nhưng 31201187701 thì không nhận, các mã sau thì lại nhận đầy đủ, 1 khúc sau nữa lại không nhận, mong mọi người chỉ các khắc phục. Cảm ơn mọi người.
Các mã bắt đầu với 96xxx thì nhận, nhưng 961xxx lại không nhận ... 31201187701 không nhận.

Bạn nói "không nhận" vậy cái gì không nhận hả bạn? Trên form hay trên sheet nếu trên sheet thì sheet nào? Nêu trên form thì không nhận tại textbox nào?
 
Upvote 0
Vd mã 31200ktf987 và 31201187701
Mình đánh vào comboxbox1 31 thì nó nhận biết mã và hiện ra tiếp 200ktf, dòng tên phụ tùng + đơn giá hiển thị.
Nhưng mã 31201187701 thì nó không nhận ra mã, không hiện tên + giá phụ tùng.
 
Upvote 0
Vd mã 31200ktf987 và 31201187701
Mình đánh vào comboxbox1 31 thì nó nhận biết mã và hiện ra tiếp 200ktf, dòng tên phụ tùng + đơn giá hiển thị.
Nhưng mã 31201187701 thì nó không nhận ra mã, không hiện tên + giá phụ tùng.

Nói lòng vòng chả hiểu gì hết, nói túm lại là gõ trên combobox nó không hiện phần mình sắp gõ tiếp ra chứ gì! Đây là một trong những cái dỡ khi sử dụng List đối với combobox khi gõ phần số, nó chỉ "thông minh" với phần chuỗi thôi. Vậy làm cách nào khắc phục đây? Trong thuộc tính của ComboBox nó lại cho ta một cái để nạp dữ liệu đó là RowSource. Với thuộc tính này nó luôn luôn hiện phần autocomplete khi ta nhập một vài ký tự. Bạn sửa lại code như sau:

Mã:
Private Sub UserForm_Initialize()
    TextBox1 = Date
    With Sheets("honda price list")
[COLOR=#008000]        'Thay vì dòng này, thì bạn đổi lại dòng màu đỏ bên dưới là OK.
        [B]'ComboBox1.List = Range(.[B5], .[G65536].End(xlUp)).Value[/B][/COLOR]
        [B][COLOR=#0000cd]ComboBox1.RowSource = "'honda price list'!" & Range(.[B5], .[G65536].End(xlUp)).Address[/COLOR][/B]
    End With
End Sub
 
Upvote 0
Web KT
Back
Top Bottom