Giúp sữa code chỉ cho nhập vào textbox ( Dương hoặc Âm ) và ( Nguyên hoặc lẻ )

Liên hệ QC

minhtuan55

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
23/3/16
Bài viết
705
Được thích
52
Chào cả nhà GPE ! em muốn code chỉ cho ổ Textbox nhập được số Âm hoặc Dương và NGuyên hoặc Lẻ. Hiện code em tự viết thì chỉ cho nhập số và dấu chấm ok rồi. Chỉ còn dấu âm vẫn bị lổi khi nhập dấu ở giửa 2 số
1552053694465.png

Mã:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
   
        Case 45 ' dau am
            If InStr(1, TextBox1, "-") > 0 Or Left(TextBox1.Value, 1) = "-" Then
               KeyAscii = 0
            End If
           
        Case 46 ' dau cham
            If InStr(1, TextBox1, ".") > 0 Or TextBox1 = "" Then
               KeyAscii = 0
            End If
           
        Case 48 To 57 ' tu 0 den 9
        Case Else
            KeyAscii = 0
    End Select
End Sub

Muốn Ok thì phải đúng theo điều kiện bên dưới.
1552052487628.png

Xin chân thành cảm ơn En Nờ Lần
 
Lần chỉnh sửa cuối:
Chào cả nhà GPE ! em muốn code chỉ cho ổ Textbox nhập được số Âm hoặc Dương và NGuyên hoặc Lẻ. Hiện code em tự viết thì chỉ cho nhập số và dấu chấm ok rồi. Chỉ còn dấu âm vẫn bị lổi khi nhập dấu ở giửa 2 số
View attachment 213334

Mã:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
  
        Case 45 ' dau am
            If InStr(1, TextBox1, "-") > 0 Or Left(TextBox1.Value, 1) = "-" Then
               KeyAscii = 0
            End If
          
        Case 46 ' dau cham
            If InStr(1, TextBox1, ".") > 0 Or TextBox1 = "" Then
               KeyAscii = 0
            End If
          
        Case 48 To 57 ' tu 0 den 9
        Case Else
            KeyAscii = 0
    End Select
End Sub

Muốn Ok thì phải đúng theo điều kiện bên dưới.
View attachment 213333

Xin chân thành cảm ơn En Nờ Lần


Sau 1 phút 42 giấy suy nghĩ mình cũng làm thành công. Và xin chia sẽ code cho các bạn. ( Hơi dài nhưng miễn sao đúng nhu cầu là Lụm Lúa )
Mã:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
    
        Case 45 ' dau am
        
           If TextBox1 = "" Or Left(TextBox1.Value, 1) = "-" Then
                If InStr(1, TextBox1, "-") > 0 Or Left(TextBox1.Value, 1) = "-" Then
                   KeyAscii = 0
                End If
            Else
                 KeyAscii = 0
            End If
            
            
        Case 46 ' dau cham
            If InStr(1, TextBox1, ".") > 0 Or TextBox1 = "" Then
               KeyAscii = 0
            End If
            
        Case 48 To 57 ' tu 0 den 9
        Case Else
            KeyAscii = 0
    End Select
End Sub
 
Upvote 0
2 sự thật:
Sự thật 1: Vấn đề vốn có thể suy nghĩ và giải quyết được trong vòng dưới 2 phút.
Sự thật 2: Thế mà chưa kịp động não đã vác đi hỏi tùm lum.

2 sự thật trên cho ra 2 kết luận:
Kết luận 1: người giải bài thông minh và có khả năng.
Lết luận 2: người hỏi có thói quen nhờ vả trước khi tự ra sức. Do tính ỷ lại hoặc do thiếu tự tin.

Sự thật thứ 3:
Người hỏi và người giải bài là 1.

Kết luận sau cùng:
Thông minh nhưng lười và có tính ỷ lại, hoặc chết nhát.
 
Upvote 0
2 sự thật:
Sự thật 1: Vấn đề vốn có thể suy nghĩ và giải quyết được trong vòng dưới 2 phút.
Sự thật 2: Thế mà chưa kịp động não đã vác đi hỏi tùm lum.

2 sự thật trên cho ra 2 kết luận:
Kết luận 1: người giải bài thông minh và có khả năng.
Lết luận 2: người hỏi có thói quen nhờ vả trước khi tự ra sức. Do tính ỷ lại hoặc do thiếu tự tin.

Sự thật thứ 3:
Người hỏi và người giải bài là 1.

Kết luận sau cùng:
Thông minh nhưng lười và có tính ỷ lại, hoặc chết nhát.
"KeyAscii = 0" nhập 4 lần chứng tỏ tốc độ keyboard nhanh hơn tốc độ suy nghĩ
 
Upvote 0
"KeyAscii = 0" nhập 4 lần chứng tỏ tốc độ keyboard nhanh hơn tốc độ suy nghĩ

Ctrl C và Ctrl V thôi bác
Bài đã được tự động gộp:

2 sự thật:
Sự thật 1: Vấn đề vốn có thể suy nghĩ và giải quyết được trong vòng dưới 2 phút.
Sự thật 2: Thế mà chưa kịp động não đã vác đi hỏi tùm lum.

2 sự thật trên cho ra 2 kết luận:
Kết luận 1: người giải bài thông minh và có khả năng.
Lết luận 2: người hỏi có thói quen nhờ vả trước khi tự ra sức. Do tính ỷ lại hoặc do thiếu tự tin.

Sự thật thứ 3:
Người hỏi và người giải bài là 1.

Kết luận sau cùng:
Thông minh nhưng lười và có tính ỷ lại, hoặc chết nhát.
đăng lên cho diễn đàn có nhiều chủ Đề phong phú hơn. ai chưa biết thì có thể vô tình xem là biết thì ( Công đức hiện tại =Công đức hiện tại + 1) và cứ như vậy thì Vô Lượng công đức + n .
PS: nảy đã lở đăng mà đường sài gòn kẹt xe quá không tịên dừng xe để Delete nên đành để luôn. nào ngờ nhìn 1 cô em xinh xinh tự nhiên trong Não sinh ra 1 năng lượng chất xám ( Chất xám hiện tại = Chất xám hiện tại + 1) Do chất xám hiện tái >= hằng số suy nghĩ và cái kết Code đã xuất hiện và chuẩn xác 100%. sau khi Post bài trang 2 thì cho Chất xám = 0 lại ( để còn về Rữa xe nửa , tắm rữa đi ngủ ) . hết phim
 
Upvote 0
và chỉ có nhập được 1 dấu chấm khi nằm sau 1 con số bên phải.
Đã là nằm sau thì chỉ có nằm sau chữ số bên trái chứ nhỉ?

Đúng phải là: "và chỉ có nhập được 1 dấu chấm khi nằm trước 1 con số bên phải.". Tức không thể có "123."

Kiếm 1 cái ốc cho Mada mới tiền tỷ cũng không dễ thế đâu. :D

Thế "-.234" có được chấp nhận không? Vì vẫn gõ được.
 
Upvote 0
Đã là nằm sau thì chỉ có nằm sau chữ số bên trái chứ nhỉ?

Đúng phải là: "và chỉ có nhập được 1 dấu chấm khi nằm trước 1 con số bên phải.". Tức không thể có "123."

Kiếm 1 cái ốc cho Mada mới tiền tỷ cũng không dễ thế đâu. :D

Thế "-.234" có được chấp nhận không? Vì vẫn gõ được.

Ngôn ngữ của em thì nó hơi ngược với người bình thường. Mục đích để kiểm tra người đọc có phát hiện và tự hiểu tôi đang muốn gì? Bác vui lòng chạy lại cái.

Mã:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
        Case 45 ' dau am
           If TextBox1 = "" Or Left(TextBox1.Value, 1) = "-" Then
                If InStr(1, TextBox1, "-") > 0 Or Left(TextBox1.Value, 1) = "-" Then
                   KeyAscii = 0
                End If
            Else
                 KeyAscii = 0
            End If
  
        Case 46 ' dau cham
                If InStr(1, TextBox1, ".") > 0 Or TextBox1 = "" Or TextBox1 = "-" Then
                   KeyAscii = 0
                End If
        
        Case 48 To 57 ' tu 0 den 9
        Case Else
            KeyAscii = 0
    End Select
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Hiện tượng keypress không bắt được Ctrl+V
 
Upvote 0
Ta xét một chút nhé.

Tôi gõ lần lượt: 1, 2, 3. Được phép. Gõ tiếp . (dấu chấm). Cũng được phép, vì ngược lại thì không bao giờ gõ được 123.45. Vậy ta đã có "123.". Thế bây giờ tôi không gõ gì nữa mà nhấn nút vd. "Đập xuống sheet". Lúc này trong TextBox có "123.", không đúng dụng ý của bạn.

Tôi đã nói rồi. Nếu nhìn dự án tiền tỷ này và hình dung nó là Mada tương lai tiền tỷ thì để có được cái "ốc" trong dự án này cũng không hề đơn giản.

Tôi e rằng có lẽ phải lượn phố một lượt nữa. Lại gặp 1 cô em xinh xinh, nõn nà, chân dài tới tận cổ ... cảm xúc dâng trào, à quên, năng lượng chất xám được nhân lên gấp bội. :D
 
Upvote 0
Ta xét một chút nhé.

Tôi gõ lần lượt: 1, 2, 3. Được phép. Gõ tiếp . (dấu chấm). Cũng được phép, vì ngược lại thì không bao giờ gõ được 123.45. Vậy ta đã có "123.". Thế bây giờ tôi không gõ gì nữa mà nhấn nút vd. "Đập xuống sheet". Lúc này trong TextBox có "123.", không đúng dụng ý của bạn.

Tôi đã nói rồi. Nếu nhìn dự án tiền tỷ này và hình dung nó là Mada tương lai tiền tỷ thì để có được cái "ốc" trong dự án này cũng không hề đơn giản.

Tôi e rằng có lẽ phải lượn phố một lượt nữa. Lại gặp 1 cô em xinh xinh, nõn nà, chân dài tới tận cổ ... cảm xúc dâng trào, à quên, năng lượng chất xám được nhân lên gấp bội. :D

Bác có lẽ hơi vội vàng. Bác gõ 50. thì load xuống sheet vẫn là 50 ( vẫn cộng trừ nhân chia được )

Mã:
Private Sub TextBox1_Change()
Range("a1") = TextBox1.Value
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
        Case 45 ' dau am
           If TextBox1 = "" Or Left(TextBox1.Value, 1) = "-" Then
                If InStr(1, TextBox1, "-") > 0 Or Left(TextBox1.Value, 1) = "-" Then
                   KeyAscii = 0
                End If
            Else
                 KeyAscii = 0
            End If
 
        Case 46 ' dau cham
                If InStr(1, TextBox1, ".") > 0 Or TextBox1 = "" Or TextBox1 = "-" Then
                   KeyAscii = 0
                End If
        
        Case 48 To 57 ' tu 0 den 9
        Case Else
            KeyAscii = 0
    End Select
End Sub
1552090930559.png
 
Upvote 0
Bác có lẽ hơi vội vàng. Bác gõ 50. thì load xuống sheet vẫn là 50 ( vẫn cộng trừ nhân chia được )

Mã:
Private Sub TextBox1_Change()
Range("a1") = TextBox1.Value
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
        Case 45 ' dau am
           If TextBox1 = "" Or Left(TextBox1.Value, 1) = "-" Then
                If InStr(1, TextBox1, "-") > 0 Or Left(TextBox1.Value, 1) = "-" Then
                   KeyAscii = 0
                End If
            Else
                 KeyAscii = 0
            End If

        Case 46 ' dau cham
                If InStr(1, TextBox1, ".") > 0 Or TextBox1 = "" Or TextBox1 = "-" Then
                   KeyAscii = 0
                End If
       
        Case 48 To 57 ' tu 0 den 9
        Case Else
            KeyAscii = 0
    End Select
End Sub
View attachment 213339
Cái này tự máy bạn là đinh dạng "." thí dụ máy người khác định dạng ",".
Bạn nên lấy định dạng thập phân của hệ thống
 
Upvote 0
Bác có lẽ hơi vội vàng. Bác gõ 50. thì load xuống sheet vẫn là 50 ( vẫn cộng trừ nhân chia được )
Tôi đang nói về yêu cầu của bạn thôi. Vì nếu "123." không ảnh hưởng gì trong mọi trường hợp thì tại sao bạn đặt ra yêu cầu ở bài #1 là dấu chấm chỉ được phép khi đứng trước 1 chữ số? Một khi bạn có yêu cầu đó thì tôi nói TextBox có "123." là không đúng yêu cầu. Tôi chưa nói là đập xuống sheet sai hoặc cộng trừ nhân chia sẽ sai. Tôi chỉ nói là TextBox có "123." không đúng yêu cầu mà chính bạn đưa ra. Thế thôi.

Bạn quen cô nào cũng được, trời không sập mà đất cũng không lở. Nhưng một khi bạn hứa là sẽ chỉ tâm sự với cô nào lùn lùn, mặt tàn nhang, rồi sau đó bạn tâm sự với cô chân dài tới tận cổ, xinh như hoa hậu, thì tôi có lý khi nói là cô ta không đúng yêu cầu của bạn. Có lý khi nói bạn thất hứa. Tôi không nói, chưa nói, là lúc đó trời sẽ sập và đất sẽ lở.
 
Upvote 0
Tôi đang nói về yêu cầu của bạn thôi. Vì nếu "123." không ảnh hưởng gì trong mọi trường hợp thì tại sao bạn đặt ra yêu cầu ở bài #1 là dấu chấm chỉ được phép khi đứng trước 1 chữ số? Một khi bạn có yêu cầu đó thì tôi nói TextBox có "123." là không đúng yêu cầu. Tôi chưa nói là đập xuống sheet sai hoặc cộng trừ nhân chia sẽ sai. Tôi chỉ nói là TextBox có "123." không đúng yêu cầu mà chính bạn đưa ra. Thế thôi.

Bạn quen cô nào cũng được, trời không sập mà đất cũng không lở. Nhưng một khi bạn hứa là sẽ chỉ tâm sự với cô nào lùn lùn, mặt tàn nhang, rồi sau đó bạn tâm sự với cô chân dài tới tận cổ, xinh như hoa hậu, thì tôi có lý khi nói là cô ta không đúng yêu cầu của bạn. Có lý khi nói bạn thất hứa. Tôi không nói, chưa nói, là lúc đó trời sẽ sập và đất sẽ lở.
Đấp bồ si ten đớt (lâu lâu xổ Tây một cái) mờ bác.
Con ốc mình mua của người khác thì phải din mát da. (tét kỹ 100%, chắc có gởi qua Nhật khám nghiệm độ luyện thép)
Con ốc mình tự chế thì chỉ cần vặn vào vừa là xong (ốc hơi lệch răng một chút thì dùng cơ lê vạn năng, rán vặn cũng vào)

(Nhưng mà bác đừng có xui người ta lượn phố, ngắm em nõn nà nhé. Xe mát da ủi con nít què tay chân tội lắm. Không biết bao nhiêu code mới tích đủ dức mà gỡ)
 
Upvote 0
(Nhưng mà bác đừng có xui người ta lượn phố, ngắm em nõn nà nhé. Xe mát da ủi con nít què tay chân tội lắm. Không biết bao nhiêu code mới tích đủ dức mà gỡ)
Êêê, tôi có xui người ta lượn phố đâu. Vốn dĩ người ta đã thích "nhìn 1 cô em xinh xinh, nõn nà" chứ đâu đợi tới khi tôi xui.
 
Upvote 0
Cũng có thể tham gia 1 chuyến cấp cứu hay đỡ đẻ nào đó để hữu ích nhiều cho cộng đồng;
he, he, he,. . .
 
Upvote 0
Cô em xinh xinh, nõn nà chỉ đưa chất xám lên não đủ để nhận đến ".123", "123." thôi
Qua "-.123" , ".123-", "123.-" thì chắc là cô em vén đùi, chất xám đã dồn đến chỗ khác!
 
Upvote 0
Web KT

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

Back
Top Bottom