Chỉ cho phép nhập số trong TextBox

Liên hệ QC

doanhhoang79

Thành viên hoạt động
Tham gia
31/3/08
Bài viết
142
Được thích
18
Chào các anh chị trên diễn đàn.

Tôi tìm thấy trên diễn đàn có một file (không nhớ tên tác giả) với nội dung chỉ cho phép nhập ký tự số và ký tự ".". Tuy nhiên khi tôi gõ liên tiếp 2 ký tự "o", 2 ký tự "d",...thì nó lại xuất hiện trong textbox (gõ theo kiểu Telex). Tôi không biết nguyên nhân lỗi này. Mong các anh chị kiểm tra giúp và thêm, sửa code để khi gõ liên tiếp ký tự "o" 2 lần nó không xuất hiện trong textbox nữa.

Tôi gửi file đính kèm

Xin cảm ơn.
 

File đính kèm

  • So trong Textbox.xls
    31 KB · Đọc: 171
Hì, chỉ tại cái tiếng Việt nhà mình lằng nhằng nên mới thế.
Em cũng nghĩ đến việc loại bỏ <- nhưng như thế thì rất bất tiện.
 
Upvote 0
Hiện tại bây giờ tôi cũng đang phải dùng cách cho nhập thỏa mái rồi bắt lỗi sau. Tuy nhiên tôi vẫn thắc mắc tại sao không có phương án tối ưu, xử lý triệt để vụ này. Lỗi này tuy nhỏ nhưng nó vẫn là lỗi.
 
Upvote 0
Hiện tại bây giờ tôi cũng đang phải dùng cách cho nhập thỏa mái rồi bắt lỗi sau. Tuy nhiên tôi vẫn thắc mắc tại sao không có phương án tối ưu, xử lý triệt để vụ này. Lỗi này tuy nhỏ nhưng nó vẫn là lỗi.
Như đã nói ở trên, lổi này không phải do code của ta khống chế... nó xuất phát từ 1 chương trình khác, cụ thể là Unikey.. vì thế muốn triệt để có lẽ phải liên hệ với... Phạm Kim Long!
Oh.. ho...
(Bạn TuanVNUNI cũng đã từng bị tình trạng tương tự đấy thôi)
 
Upvote 0
Như đã nói ở trên, lổi này không phải do code của ta khống chế... nó xuất phát từ 1 chương trình khác, cụ thể là Unikey.. vì thế muốn triệt để có lẽ phải liên hệ với... Phạm Kim Long!
Oh.. ho...
(Bạn TuanVNUNI cũng đã từng bị tình trạng tương tự đấy thôi)

Đành vậy chứ biết làm sao?????????+-+-+-+
 
Upvote 0
Như đã nói ở trên, lổi này không phải do code của ta khống chế... nó xuất phát từ 1 chương trình khác, cụ thể là Unikey.. vì thế muốn triệt để có lẽ phải liên hệ với... Phạm Kim Long!
Oh.. ho...
(Bạn TuanVNUNI cũng đã từng bị tình trạng tương tự đấy thôi)
Khi gõ phím, Unikey xử lý trước, đến sự kiện KeyDown thì nó đã thành phím khác rồi ! KeyDown, KeyPress không kiểm soát được phím gõ trong trường hợp này.
 
Upvote 0
Tôi nghĩ đến việc dùng sendkeys để bật tắt chế độ tiếng việt nhưng lại khổ nỗi làm sao biết được bộ gõ đang ở chế độ nào để mà bật tắt.
Ví dụ trong bộ gõ ta thiết lập phím chuyển đổi là Alt+z thì ta có thể dùng sendkeys "%z" nhưng nếu bộ gõ đăng tắt mà ta sendkeys thì lại trở thành bật. Dở ở chỗ là bộ gõ lại sử dụng phím bật tắt cùng 1 tổ hợp phím.
 
Upvote 0
Chào các bạn,mình không rành về Excel lắm, mình đang muốn set 1 vùng trong bảng tính của mình chỉ cho phép nhập dữ liệu kiểu ngày thôi, vùng khác chỉ cho nhập số .Mình không biết giải quyết vấn đề này ra sao hết,mong các bạn chỉ mình với .Thank :D
 
Upvote 0
Bạn thử dùng cách này xem sao nhé
PHP:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Column <> 1 Then Exit Sub 'Giả sử cần kiểm tra trên cột A'
    If Not IsDate(Target.Value) Then
        MsgBox "Giá trị nhập vào không hợp lệ." & vbCrLf & "Hãy nhập lại."
        Range(Target.Address).Select
    End If
End Sub
 
Upvote 0
Chào các bạn,mình không rành về Excel lắm, mình đang muốn set 1 vùng trong bảng tính của mình chỉ cho phép nhập dữ liệu kiểu ngày thôi, vùng khác chỉ cho nhập số .Mình không biết giải quyết vấn đề này ra sao hết,mong các bạn chỉ mình với .Thank :D
Có thể dùng chức năng có sẳn của Excel để làm điều này:
- Quét chọn vùng dử liệu
- Vào menu Data\Validation và làm giống như hình dưới đây

attachment.php
 

File đính kèm

  • untitled.JPG
    untitled.JPG
    49.7 KB · Đọc: 168
Upvote 0
Giá trị của textbox bị hạn chế

Cho em hỏi. (tưởng đơn giản mà ko hiểu sao làm mãi không được)

Giá trị nhập vào ô textbox nếu lớn hơn giá trị của shee1.cells(1,1).value thì thông báo lỗi msgbox "gia tri ban nhap khong chinh xac"

Em viết như sau:
PHP:
if textbox1.value > sheets("sheet1").cells(1,1).value then msgbox "gia tri ban nhap khong chinh xac"
Lạ một cái là em nhập giá trị vào textbox rõ ràng là nhỏ hơn giá trị ở cells(1,1) rồi mà nó vẫn hiện ra msg thông báo lỗi là sao ạ.
Hjc, ai biết xin mách dùm.
 
Upvote 0
Cho em hỏi. (tưởng đơn giản mà ko hiểu sao làm mãi không được)

Giá trị nhập vào ô textbox nếu lớn hơn giá trị của shee1.cells(1,1).value thì thông báo lỗi msgbox "gia tri ban nhap khong chinh xac"

Em viết như sau:
PHP:
if textbox1.value > sheets("sheet1").cells(1,1).value then msgbox "gia tri ban nhap khong chinh xac"
Lạ một cái là em nhập giá trị vào textbox rõ ràng là nhỏ hơn giá trị ở cells(1,1) rồi mà nó vẫn hiện ra msg thông báo lỗi là sao ạ.
Hjc, ai biết xin mách dùm.
Bạn thử sửa như vầy xem:
Mã:
If [COLOR=#ff0000][B]Val(TextBox1.Value)[/B][/COLOR] > Sheets("sheet1").Cells(1, 1).Value Then MsgBox "gia tri ban nhap khong chinh xac"
 
Upvote 0
Ok ,được rồi hihi. Cảm ơn bạn nhiều, bạn giỏi quá. Cho mình hỏi chút được không?
PHP:
Val(textbox1.value)
PHP:
textbox1.value
khác nhau ở chỗ nào :(
 
Lần chỉnh sửa cuối:
Upvote 0
Ok ,được rồi hihi. Cảm ơn bạn nhiều, bạn giỏi quá. Cho mình hỏi chút được không?
PHP:
Val(textbox1.value)
PHP:
textbox1.value
khác nhau ở chỗ nào :(
Cho dù bạn nhập một giá trị số vào Textbox1 thì bản thân Textbox1.Value vẫn là một giá trị kiểu Text. Do vậy, khi bạn so sánh Textbox1.Value với một số thì nó luôn lớn hơn, hay nói cách khác: biểu thức TextBox1.Value > Sheets("sheet1").Cells(1, 1).Value luôn luôn đúng, và Msgbox luôn hiện ra dù bạn nhập số mấy vào Textbox1. Bạn thử nghiệm một chút nhé: Nhập A1=5, B1='1 (có dấu nháy ở trước số 1) và nhập vào C1 công thức =B1>A1. Kết quả là C1 luôn cho giá trị TRUE mặc dù A1 lớn cỡ nào.
Val(Textbox1.Value) sẽ chuyển giá trị (số) Textbox1.Value thành một số thực. Khi đó, phép so sánh trên sẽ chính xác.
 
Upvote 0
Cho dù bạn nhập một giá trị số vào Textbox1 thì bản thân Textbox1.Value vẫn là một giá trị kiểu Text. Do vậy, khi bạn so sánh Textbox1.Value với một số thì nó luôn lớn hơn, hay nói cách khác: biểu thức TextBox1.Value > Sheets("sheet1").Cells(1, 1).Value luôn luôn đúng, và Msgbox luôn hiện ra dù bạn nhập số mấy vào Textbox1. Bạn thử nghiệm một chút nhé: Nhập A1=5, B1='1 (có dấu nháy ở trước số 1) và nhập vào C1 công thức =B1>A1. Kết quả là C1 luôn cho giá trị TRUE mặc dù A1 lớn cỡ nào.
Val(Textbox1.Value) sẽ chuyển giá trị (số) Textbox1.Value thành một số thực. Khi đó, phép so sánh trên sẽ chính xác.

oh, cảm ơn bạn nhiều. Mình hiểu ra vấn đề rồi. Ngoài cách của bạn, còn có thể khắc phục khác như sau:
PHP:
Dim i as integer
   ' dua gia tri cua textbox1 ve dang integer
i = textbox1.value
if i > sheets("sheet1").cells(1,1).value then msgbox "gia tri ban nhap khong chinh xac"  
end if
 
Lần chỉnh sửa cuối:
Upvote 0
Tiện thể cho mình hỏi.
Nếu chỉ cho nhập chữ thôi. Không cho nhập số và bất kì ký tự khác trong Textbox thì làm sao.
 
Upvote 0
Với code này:
PHP:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  Select Case KeyAscii
    Case 48 To 57
    Case 45
      If InStr(1, Me.TextBox1.Text, "-") > 0 Or Me.TextBox1.SelStart > 0 Then KeyAscii = 0
    Case 46
      If InStr(1, Me.TextBox1.Text, ".") > 0 Then KeyAscii = 0
    Case Else
      KeyAscii = 0
  End Select
End Sub
Chạy From lần thứ nhất sẽ bị lổi gõ 2 chử d hoặc 2 chử o
Nhưng nếu đóng Form rồi chạy lại lần nữa thì... hết bị...
Kỳ lạ thật!
----------------
Ủa... mà sao bây giờ test lại không lổi nữa ta?
Các bạn test dùng file đính kèm này với!
chào bác
em muốn hỏi làm thế nào text box nó có chức năng cộng như một ô trên excel . ví dụ: + (=) 20.3+50.7+1000
sau đó text box tự xử lý cho giá trị tổng:1071
em cảm ơn bác
 
Upvote 0
chào bác
em muốn hỏi làm thế nào text box nó có chức năng cộng như một ô trên excel . ví dụ: + (=) 20.3+50.7+1000
sau đó text box tự xử lý cho giá trị tổng:1071
em cảm ơn bác
Lập topic mới đi bạn. Nội dung của bạn không liên quan đến topic này đâu.
 
Upvote 0
Kính chào anh chị em trên diễn đàn!
Tôi có thắc mắc nhờ ace giúp đỡ, về code vba excel định dạng số TexBox.
Tôi muốn khi nhập số trong TexBox sẽ hiển thị dấu phẩy (,) - phân cách hàng nghìn; dấu chấm (.) - phân cách 02 số thập phân; thêm điều kiện nữa là chỉ cho phép nhập số và dấu chấm (.) - phân cách 02 số thập phân.
ví dụ: trong TexBox khi tôi nhập sẽ hiển thị là: 123,456.78
Xin cảm ơn nhiều ạ!
 
Upvote 0
Web KT

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

Back
Top Bottom