Hỏi về lựa chọn button trong Inputbox

Liên hệ QC

ThanhThao

Thành viên mới
Tham gia
19/7/06
Bài viết
49
Được thích
57
Tôi hay sử dụng MsgBox và InputBox. Trong MsgBox có rất nhiều lựa chọn Button như OK (vbOK), Cancel (vbCancel), Yes (vbYes), No (vbNO),... Tuy nhiên trong InputBox lại không có lựa chọn button Cancel.
Trong trường hợp muốn thoát lệnh (dùng phím Esc hoặc Cancel) thì làm như thế nào?

Các anh chị giúp cho 1 tay nhé! !$@!!

Sau khi mò mẫm thì tôi đã thực hiện được:
Mã:
Private Sub CommandButton1_Click()
    Dim Dangcongthuc
        Dangcongthuc = Application.InputBox("Vao so lieu la cong thuc(vi du nhu =2+5):",  _
                "Linh tinh", [B][COLOR="Red"]Type:=0[/COLOR][/B])
        If Dangcongthuc = False Then Exit Sub
    Range("A1").Value = Dangcongthuc
End Sub

Mấu chốt là dòng này đây:
Mã:
If Dangcongthuc = [B][COLOR="Red"]False Then Exit Sub[/COLOR][/B]
Khi ta bấm Cancel hoặc Esc thì thoát ra.

Như vậy:
- Giá trị vào là công thức bạn khai type:=0
- Giá trị là số bạn khai type:=1
- Giá trị là chuỗi (text) bạn khai type:=2
- Giá trị logic (True hoặc False) bạn khai type:=4 (Ví dụ: =3>5 thì kết quả FALSE, còn =3=3 thì cho TRUE)
- Giá trị là ô tham chiếu bạn khai type:=8
:-= --=--
 
Với nhiều dữ liệu vào dạng InputBox (vd trên 10 giá trị), cách quản lý như thế nào thì hiệu quả nếu ta nhập sai. Tức là phải vào lại giá trị, cách thực hiện nào là hay nhất?

Xin ý kiến các anh chị!
 
Mã:
Function GetDate(ByRef GetValue As Date, Optional ByVal Default As Date = 0) As Boolean
Dim vDate
If Default = 0 Then Default = Date

Begin:

 vDate = InputBox("Ban hay vao ngay (dd/MM/yy):", "Ngay ghi so", Default)
 If vDate = "False" Then
  GoTo EndFunc
 End If
 GetDate = IsDate(vDate)
 If GetDate = False Then
  MsgBox "Vao sai gia tri ngay (date). Ban hay nhap lai.", vbExclamation, "Sai kieu gia tri"
  GoTo Begin
 Else
  GetValue = CDate(vDate)
 End If

EndFunc:
End Function
'-------------------------------------------------
Sub TestForDate()
Dim vDate As Date
  If GetDate(vDate) Then
    MsgBox vDate
  End If
End Sub

Bác tìm hiểu thêm mấy hàm dạng IsFunction (IsNumber, IsText, IsEmpty,...).
 
Nếu như bạn Tuân thì sẽ xử lý phức tạp nếu có nhiều giá trị input. Nhất là nhiều kiểu dữ liệu khác nhau.
 
InputBox chỉ dùng để nhập giá trị đơn thôi. Nếu nhập đơn thì cách viết của em trên là tương đối chặt rồi. Nếu bác muốn nhập nhiều thì chỉ còn cách tạo Form.
 
ThanhThao đã viết:
- Giá trị là ô tham chiếu bạn khai type:=8

Thanks!
Cho tôi hỏi thêm là làm thế nào xác định được vùng mình chọn khi sử dụng type:=8. Ví dụ như số cột, hàng và địa chỉ vùng vừa được chọn?
 
Thêm Set ở đầu thì sẽ xác định được kích thước của mảng:

Mã:
Private Sub CommandButton1_Click()
Dim Dangmang
        [COLOR="Red"]Set[/COLOR] Dangmang = Application.InputBox("Vao so lieu la mang:", "Linh tinh", Type:=8)
        MsgBox "So cot la: " & Dangmang.Columns.Count
        MsgBox "So hang la: " & Dangmang.Rows.Count
        MsgBox "Dia chi o dau tien la: " & Dangmang.Cells(1, 1).Address
        MsgBox "Dia chi o cuoi cung la: " & Dangmang.Cells(Dangmang.Rows.Count, Dangmang.Columns.Count).Address

End Sub

Bác nào có cao kiến hơn thì chỉ thêm.
 
Lần chỉnh sửa cuối:
chỉ cách trích lọc vị trí cell

nói về hàm inputbox cho em hỏi vậy nếu như dùng nó để nhập nhiều cell liên tiếp bằng chuột sau 1 hồi viết code và cần lấy giá trị tại cell thứ 2 hoặc cell thứ n bất kỳ trong trong mảng dữ liệu đã chọn thì làm thế nào điều này có làm được ở inputbox không? xin các anh mách bảo
 
Web KT
Back
Top Bottom