chisinhvnn
Thành viên tiêu biểu

- Tham gia
- 7/3/08
- Bài viết
- 479
- Được thích
- 106
Mã:
rngSource = Application.InputBox("Chon vung du lieu goc", "Chon vung du lieu", Type:=8)
rngSource = Application.InputBox("Chon vung du lieu goc", "Chon vung du lieu", Type:=8)
Bạn sử dụng thế này xem sao?Mình dùng đoạn code trên để ghi dữ liệu xuống sheet. Khi mình không muốn lấy dữ liệu nữa bấm ESC hoặc Cancel thì bị lỗi. Nhờ GPE giúp đở xử lý lỗi khi mình nhấn ESC (hoặc Cancel) để thoátMã:rngSource = Application.InputBox("Chon vung du lieu goc", "Chon vung du lieu", Type:=8)
Public Sub GPE()
Dim rngSource As Range
On Error Resume Next
Set rngSource = Application.InputBox("Chon vung du lieu goc", "Chon vung du lieu", Type:=8)
If (rngSource Is Nothing) = False Then
MsgBox rngSource.Address
End If
End Sub
Chỉ một dòng trên thì đâu có lỗi???Mình dùng đoạn code trên để ghi dữ liệu xuống sheet. Khi mình không muốn lấy dữ liệu nữa bấm ESC hoặc Cancel thì bị lỗi. Nhờ GPE giúp đở xử lý lỗi khi mình nhấn ESC (hoặc Cancel) để thoátMã:rngSource = Application.InputBox("Chon vung du lieu goc", "Chon vung du lieu", Type:=8)
Bạn sử dụng thế này xem sao?
Mã:Public Sub GPE() Dim rngSource As Range On Error Resume Next Set rngSource = Application.InputBox("Chon vung du lieu goc", "Chon vung du lieu", Type:=8) If (rngSource Is Nothing) = False Then MsgBox rngSource.Address End If End Sub
Sub laydulieu()
Dim vung As Range
On Error Resume Next
Set vung = Application.InputBox("Chon vung du lieu goc", "Chon vung du lieu", Type:=8)
If (vung Is Nothing) = False Then
With Sheet3
If .[a1] = "" Then
.[a1] = vung.Value
Else
.Range("A1:J10000").Clear
.Range("A1") = vung.Value
End If
End With
End If
End Sub
Thử như thế này xem saoMình viết code như vậy để ghi vào sheet, nhưng nó chỉ lấy được dữ liệu cotrj và dòng đầu tiên của vùng chọn, GPE giúp mìĩnhử lấy để ghi vào sheet toàn bộ dữ liệu của vùng chọn vớiMã:Sub laydulieu() Dim vung As Range On Error Resume Next Set vung = Application.InputBox("Chon vung du lieu goc", "Chon vung du lieu", Type:=8) If (vung Is Nothing) = False Then With Sheet3 If .[a1] = "" Then .[a1] = vung.Value Else .Range("A1:J10000").Clear .Range("A1") = vung.Value End If End With End If End Sub
Sub laydulieu()
Dim vung As Range, R As Long, C As Long
On Error Resume Next
Set vung = Application.InputBox("Chon vung du lieu goc", "Chon vung du lieu", Type:=8)
If (vung Is Nothing) = False Then
R = vung.Rows.Count: C = vung.Columns.Count
With Sheet3
If .[a1] = "" Then
.[a1].Resize(R, C) = vung.Value
Else
.Range("A1:J10000").Clear
.Range("A1").Resize(R, C) = vung.Value
End If
End With
End If
End Sub
Nãy có dùng reize(lbound(vung,1),ubound(vung,2) nhưng nó không hiểu. Chị Pacific giải thích giúp mình với được khôngThử như thế này xem sao
Mã:Sub laydulieu() Dim vung As Range, R As Long, C As Long On Error Resume Next Set vung = Application.InputBox("Chon vung du lieu goc", "Chon vung du lieu", Type:=8) If (vung Is Nothing) = False Then R = vung.Rows.Count: C = vung.Columns.Count With Sheet3 If .[a1] = "" Then .[a1].Resize(R, C) = vung.Value Else .Range("A1:J10000").Clear .Range("A1").Resize(R, C) = vung.Value End If End With End If End Sub
Mà thấy buồn cười là thằng inputbox hỗ trợ nhập dạng boolean, nhưng khi người dùng nhấn nút cancel thì nó trả lại false. nêua vậy làm sao xác định được hành vi của người dùng.
Em thấy lạ, có phần vô lý nên muốn trao đổi. Xem cộng đồng có những cách nhìn khác không không.Mắc mớ gì buồn cười. Người ta chỉ làm ra cái giao diện căn bản để dùng cho loại code hổ trợ phần mềm chính (Excel, Access, Script,...). Mấy vị bày đủ trò lắc léo ra rồi đòi hỏi tùm lum.
Bạn không biết hay là không có?nếu muốn ní trả lại range thì dùng set, kết hợp bẫy lỗi. còn như chủ thớt rất khó bẫy lỗi. Giả sử chọn một ô, và chả may cái ô đó có giá trị là false thì có thánh mới chữa được, do lúc đó không có cơ chế chính xác để nhận biết là có cancel không
Đang cần người tâm sự ý mà!Bạn không biết hay là không có?