jacky_police
Thành viên chính thức


- Tham gia
- 30/7/07
- Bài viết
- 54
- Được thích
- 4
Ai có code VBA để khi nhập điểm thi 2 số nó tự thêm dấu phẩy và giữa và tự xuống dòng cho em xin với.
Em xin cảm ơn!
Em xin cảm ơn!
Đương nhiên phải là 10 rồi bạn.Nếu nhập con số 10 thì bạn muốn nó là 1,0 hay 10 đây?
Chuyện này có khi lại giống với ca dao: 'Bà già đi chợ cầu Đông' không chừng
Bạn nên gửi file kèm ví dụ và kết quả mong muốn chắc đỡ phải hỏi nhiều.Đương nhiên phải là 10 rồi bạn.
Thứ nhất là không chịu khó tạo file.Ví dụ: Khi điểm hs là 1 thì nhập 1 trên màn hình hiển thị là 1,0. Nếu điểm hs là 5,5 thì nhập 55, màn hình hiển thị là 5,5. Tương tự với số lẻ nhập 2 số màn hình hiển thị dấu phẩy ở giữa. Nếu điểm là 10 thì nhập 10 và màn hình hiển thị là 10.
Bài này không phải là khó,và tôi biết bác SA_DQ biết làm,nhưng bạn trả lời vầy người ta phật ý không muốn tiếp tục bài chăng?Đương nhiên phải là 10 rồi bạn.
Đối với bạn thì đương nhiên, đối với Excel thì không, đối với người biết sử dụng excel cũng là không. Gõ 10 và 55 đối với excel là như nhau ở chỗ có 2 con số, làm sao phân biệt khi vầy khi khác.Đương nhiên phải là 10 rồi bạn.
Đối với bạn thì đương nhiên, đối với Excel thì không, đối với người biết sử dụng excel cũng là không. Gõ 10 và 55 đối với excel là như nhau ở chỗ có 2 con số, làm sao phân biệt khi vầy khi khác.
Phân biệt bằng được dùng hàm len() right().còn VBA cũng được,Nhưng bài này làm bằng VBA!làm sao phân biệt
Bài 2 của bác @SA_DQ và bài 8 của tôi dựa trên yêu cầu bài 1: "nhập điểm thi 2 số nó tự thêm dấu phẩy vào giữa", và 10 là "2 số"Điểm thi hiện tại chỉ cao nhất là 10, nếu gõ số lớn hơn 10 thì nó sẽ được hiểu là nhập số có phẩy.
2.2: Viết bằng VBA không cần biết máy cài thế nào, vì nếu len =2 thì chia 102.2.Còn tùy vào máy bạn cài nữa,như máy tôi cài dấu phẩy nó là dạng text ,còn dấu chấm mới là dạng số
2.3.Với các số bạn nhập như 9 điểm mà bạn nhập 9 không nói bạn nhập 90 thì nó sẽ là 9 hay giữ nguyên 90 (theo tôi nghĩ sẽ bảo là 9)
Bài #2 người ta hỏi nếu gõ đúng 10 thì là 10 điểm hay 1 điểm?Điểm thi hiện tại chỉ cao nhất là 10, nếu gõ số lớn hơn 10 thì nó sẽ được hiểu là nhập số có phẩy.
Sub NhapDiem(tgtCell As Range)
Select Case Len(tgtCell.Value)
Case 1
tgtCell.Value = tgtCell.Value
Case 2
If tgtCell.Value = 10 Then
tgtCell.Value = tgtCell.Value
Else
tgtCell.Value = tgtCell.Value / 10
End If
Case 3
tgtCell.Value = tgtCell.Value / 100
Case Else
MsgBox "So khong duoc lon hon 3 chu so"
End Select
End Sub
Bài #2 người ta hỏi nếu gõ đúng 10 thì là 10 điểm hay 1 điểm?
Giống như ở bài 3 tác giả trả lời bài 2. Trong khi bài 1 yêu cầu cứ 2 số thì chèn giữa bằng 1 dấu phẩy. Và cách trả lời của tác giả là "đương nhiên phải hiểu" mặc dù người ta đang hỏi để giúp.Gõ 10 thì nhâp vô là 10 bác.
Cảm ơn bác.Cũng là một cách nhưng dù sao cũng phải tách hay số ra để thêm dấu "," ở giữa .ví dụ như nhập 55 thì thêm dấu phẩy ở giữa là 5,5 .vậy dùng 2 biến tách những số có hai chữ số,thì số có hai chữ số khác 10 và số cuối bằng 0 thì lấy luôn số đầu cũng được Bác2.2: Viết bằng VBA không cần biết máy cài thế nào, vì nếu len =2 thì chia 10
2.3: Nếu làm đúng yêu cầu bài 1 thì khi gõ 90 chèn dấu phẩy vào giữa thành 9,0 hoặc chia 10 cũng ra 9.
Đọc code bài 14 xem, có ai lại tách chuỗi rồi nối chuỗi, rồi kiểm tra dấu thập phân của hệ thống cho nó nhiêu khê ra.Cảm ơn bác.Cũng là một cách nhưng dù sao cũng phải tách hay số ra để thêm dấu "," ở giữa .ví dụ như nhập 55 thì thêm dấu phẩy ở giữa là 5,5 .vậy dùng 2 biến tách những số có hai chữ số,thì số có hai chữ số khác 10 và số cuối bằng 0 thì lấy luôn số đầu cũng được Bác
Giống như ở bài 3 tác giả trả lời bài 2. Trong khi bài 1 yêu cầu cứ 2 số thì chèn giữa bằng 1 dấu phẩy. Và cách trả lời của tác giả là "đương nhiên phải hiểu" mặc dù người ta đang hỏi để giúp.
Bài này không phải là khó,và tôi biết bác SA_DQ biết làm,nhưng bạn trả lời vầy người ta phật ý không muốn tiếp tục bài chăng?
ý em nói là làm theo cách tách chuỗi,tại bác có thành kiến cứ hay bắt bẻ em thôicó ai lại tách chuỗi rồi nối chuỗi,
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, WorkRng As Range
Set WorkRng = Intersect(Application.ActiveSheet.Range("E1:E99"), Target)
If WorkRng Is Nothing Then Exit Sub
If Len(Target.Value) > 2 Then MsgBox "So ban vua nhap chua dung": Target.Value = "": Target.Offset(-1, 0).Select: Exit Sub
Application.EnableEvents = False
Application.ScreenUpdating = False
For Each Rng In WorkRng
If Not VBA.IsEmpty(Rng.Value) And Len(Rng.Value) = 2 And Rng.Value <> 10 Then
Rng.Value = Rng.Value / 10
End If
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub