Nhờ Anh chị em sửa lỗi code VBA dùng InputBox (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

banhchuoichien

Thành viên mới
Tham gia
27/4/09
Bài viết
31
Được thích
13
Tôi có 1 code đơn giản sau mà không chạy được mong các anh chị em sửa giúp.

Sub Dd_Num()



'Ctrl+Shift+A


Dim n As Integer
n = Application.InputBox("Bao nhieu so thap phan", "", 3)
Select Case n
Case n = 1
Selection.NumberFormat = "0.0"
Case n = 2
Selection.NumberFormat = "0.00"
Case n = 3
Selection.NumberFormat = "0.000"
Case n = 4
Selection.NumberFormat = "0.0000"
Case n = 5
Selection.NumberFormat = "0.00000"
Case n > 5
MsgBox ("Qua nhieu chu so thap phan")
Case Esle
MsgBox ("Nhap so duong")
End Select
End Sub
 
Tôi có 1 code đơn giản sau mà không chạy được mong các anh chị em sửa giúp.

Sub Dd_Num()



'Ctrl+Shift+A


Dim n As Integer
n = Application.InputBox("Bao nhieu so thap phan", "", 3)
Select Case n
Case n = 1
Selection.NumberFormat = "0.0"
Case n = 2
Selection.NumberFormat = "0.00"
Case n = 3
Selection.NumberFormat = "0.000"
Case n = 4
Selection.NumberFormat = "0.0000"
Case n = 5
Selection.NumberFormat = "0.00000"
Case n > 5
MsgBox ("Qua nhieu chu so thap phan")
Case Esle
MsgBox ("Nhap so duong")
End Select
End Sub

Sai vài chỗ! Xem code tôi sửa rồi tự so sánh nhé
Mã:
Sub Dd_Num()
  Dim n As Integer
  n = Application.InputBox("Bao nhieu so thap phan", "", 3, Type:=1)
  Select Case n
    Case 1
      Selection.NumberFormat = "0.0"
    Case 2
      Selection.NumberFormat = "0.00"
    Case 3
      Selection.NumberFormat = "0.000"
    Case 4
      Selection.NumberFormat = "0.0000"
    Case 5
      Selection.NumberFormat = "0.00000"
    Case Is > 5
      MsgBox ("Qua nhieu chu so thap phan")
    Case Else
      MsgBox ("Nhap so duong")
  End Select
End Sub
Nếu dùng để học VBA thì sửa vậy. Còn nếu viết code để dùng thì có thể rút gọn nữa
 
Upvote 0
Sai vài chỗ! Xem code tôi sửa rồi tự so sánh nhé
Mã:
Sub Dd_Num()
  Dim n As Integer
  n = Application.InputBox("Bao nhieu so thap phan", "", 3, Type:=1)
  Select Case n
    Case 1
      Selection.NumberFormat = "0.0"
    Case 2
      Selection.NumberFormat = "0.00"
    Case 3
      Selection.NumberFormat = "0.000"
    Case 4
      Selection.NumberFormat = "0.0000"
    Case 5
      Selection.NumberFormat = "0.00000"
    Case Is > 5
      MsgBox ("Qua nhieu chu so thap phan")
    Case Else
      MsgBox ("Nhap so duong")
  End Select
End Sub
Nếu dùng để học VBA thì sửa vậy. Còn nếu viết code để dùng thì có thể rút gọn nữa

dạ em muốn dùng thì phải viết sao anh ? em chỉ thích cái gì ngắn ngắn thôi ạ --=0--=0
 
Upvote 0
Còn rút gọn được nữa hả bạn. Mình mới chỉ biết đến đó thôi. Bạn chỉ giúp mình với.
 
Upvote 0
dạ em muốn dùng thì phải viết sao anh ? em chỉ thích cái gì ngắn ngắn thôi ạ --=0--=0

Tất cả các chọn lựa dùng trị là số nguyên đều có thể dùng array hoặc dùng hàm Choose.

IF (trong giới hạn) THEN
Selection.NumberFormat = "0." & Choose(số, "0", "00", "000", "0000", "00000")
ELSE
' lỗi
END IF

Nhưng riêng bài này, số "0" có tỷ lệ trực tiếp với số input cho nên dùng hàm String cũng được

IF (trong giới hạn) THEN
Selection.NumberFormat = "0." & String(n, "0")
ELSE
' lỗi
END IF
 
Upvote 0
Cho mình góp vui với:
PHP:
Option Explicit
Sub STF()
 Dim N As Integer
 Const GPE As String = "0.000000000000000"
 Dim SFm As String
 
 N = Application.InputBox("Bao nhieu so thap phan", "", 3)
 SFm = Left(GPE, 2 + N)
 Selection.NumberFormat = SFm
End Sub
 
Upvote 0
Bài này dùng inputbox để nhập số cho nên nếu code đúng thì phải có chỗ bắt lỗi nhập.
 
Upvote 0
Còn rút gọn được nữa hả bạn. Mình mới chỉ biết đến đó thôi. Bạn chỉ giúp mình với.

Rút gọn là 1 chuyện. Tôi cho rằng bẫy lỗi mới quan trong nhất
1> Ở đây bạn có dùng Selection, vậy nếu Selection của ta không phải vùng dữ liệu thì sao? (nhiều khi bạn đang chọn cái hình nào đó cũng không chừng) ---> Vậy phải bẫy lỗi trường hợp Selection không phải là Range
2> Bạn dùng InputBox thì phải chỉ rõ kiểu dữ liệu. Nếu người ta không nhập số mà nhập text thì sao. Vậy nên tôi dùng Type:=1 trong InputBox để bác Bill tự bắt lỗi
3> Dùng InputBox phải tính đến chuyện người ta bấm Cancel. Ý nghĩa của nút này là "Tôi hối hận rồi, tôi không muốn làm gì cả" --=0 ---> trường hợp này phải "im re" không chạy code, không thông báo gì cả mới đúng
----------------------
Code đề nghị:
Mã:
Sub Dd_Num()
  Dim n, rng As Range
  If TypeName(Selection) = "Range" Then
    Set rng = Selection
    n = Application.InputBox("Bao nhieu so thap phan", "", 3, Type:=1)
    If TypeName(n) <> "Boolean" Then
      If n > 0 And n < 6 Then
        rng.NumberFormat = "0." & String(n, "0")
      Else
        MsgBox ("Nhap so sai roi!")
      End If
    End If
  Else
    MsgBox "Hay chon vung du lieu truoc khi chay code!"
  End If
End Sub
Không biết còn trường hợp nào cần bẫy nữa không?
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom