Mình xin gửi file đính kèm ạChào các bạn, các anh/ chị,
Mình cần hỗ trợ lệnh trong VBA để xác định vị trí của 1 ô trong 1 vùng dữ liệu như trong file đính kèm.
Các bạn vầ các anh/ chị xem và hỗ trợ giúp mình nhé. Xin cảm ơn.
Bạn thử xem đúng ý ko?Sub GPE()
MsgBox sheet1.[B2:J21].Find("A").Address
End Sub
Dạ đúng rồi bạn.Bạn thử xem đúng ý ko?
Function GPE(fStr As String, sRng As Range, Opt As Byte)
'Opt = 1 trả về hàng ; opt = 2 trả về cột
On Error GoTo Thoat
Dim fRng As Range
Set fRng = sRng.Find(fStr, , xlFormulas, xlWhole)
If Not fRng Is Nothing Then
If Opt = 1 Then
GPE = fRng.Row
ElseIf Opt = 2 Then
GPE = fRng.Column
Else
GPE = "Tham so sai"
End If
Else
GPE = "Khong tim thay"
End If
Thoat: Exit Function
End Function
Thớt đòi 2 biến mờ.Bạn thử xem đúng ý chưa nhé
Cảm ơn bạn nhé,Bạn thử xem đúng ý chưa nhé
Cảm ơn bạn đã góp ý.Thớt đòi 2 biến mờ.
Sub DiaChi(sStr As String, rg As Range, ByRef rw As Long, ByRef cl As Long)
...
rw = dong
cl = cot
End Sub
Function DiaChi(sStr As String, rg As Range) As Variant
Dim a(1 To 2)
...
a(1) = dong
a(2) = cot
DiaChi = a
End Function
Bạn @Hamedanger cho mình hỏi xíu nhé. tại sao opt bạn lại dùng as byte nhỉ, hay do thói quen bạn thích số nguyên 8 bit.Bạn thử xem đúng ý chưa nhé
Bạn ở đây lâu quá rồi mà không biết rằng đó là kiểu cũ của GPE?Bạn @Hamedanger cho mình hỏi xíu nhé. tại sao opt bạn lại dùng as byte nhỉ, hay do thói quen bạn thích số nguyên 8 bit.
Tự mình thấy lạ nên mới thắc mắc.
Sao giống bài này vậy?Mình muốn đưa vùng B2:J21 vào hàm GPE của bạn Hamedanger như dòng code bị bôi đỏ bên trên ạ.
Vâng cảm ơn bạn, mình cũng đang tìm hiểu từ từ, nhưng tại lâu lâu mới đụng vô nên nhiều cái không nhớ. Đoạn code bạn chỉ mình áp dụng được rồi. Cảm ơn bạn nhiều ạ.Sao giống bài này vậy?
(1) VBA - Tìm tọa độ cột theo điều kiện tìm kiếm | Giải Pháp Excel (giaiphapexcel.com)
"đưa vùng B2:J21 ... "
Mình học từ từ đã, giờ còn chưa biết gọi tới Worksheet, Range, Cells thì không nên làm gì tiếp.
col = GPE("chuỗi cần tìm", Sheet1.Range("B2:J21"), 1)
Opt khi nhập vào chỉ là 1 hoặc 2, mình thấy byte là đủ rồi , đơn giản vậy thôi bạnBạn @Hamedanger cho mình hỏi xíu nhé. tại sao opt bạn lại dùng as byte nhỉ, hay do thói quen bạn thích số nguyên 8 bit.
Tự mình thấy lạ nên mới thắc mắc.
để là "bô luyn" cho nó tiết kiệm hơn, một bit thì chắc chắn sẽ tốt hơn 8 bít. cháu trộm nghĩ là như vậy.Bạn ở đây lâu quá rồi mà không biết rằng đó là kiểu cũ của GPE?
Nghĩ sai bét. Boolean dài 2 bytes.để là "bô luyn" cho nó tiết kiệm hơn, một bit thì chắc chắn sẽ tốt hơn 8 bít. cháu trộm nghĩ là như vậy.
Vâng cảm ơn bạn, mình cũng đang tìm hiểu từ từ, nhưng tại lâu lâu mới đụng vô nên nhiều cái không nhớ. Đoạn code bạn chỉ mình áp dụng được rồi. Cảm ơn bạn nhiều ạ.
Bạn @befaint cho mình hỏi thêm một chút nhé.Sao giống bài này vậy?
(1) VBA - Tìm tọa độ cột theo điều kiện tìm kiếm | Giải Pháp Excel (giaiphapexcel.com)
"đưa vùng B2:J21 ... "
Mình học từ từ đã, giờ còn chưa biết gọi tới Worksheet, Range, Cells thì không nên làm gì tiếp.
col = GPE("chuỗi cần tìm", Sheet1.Range("B2:J21"), 1)
Có cái hình bự chà bá ở bài trước kìa.Bạn @befaint cho mình hỏi thêm một chút nhé.
Trong trường hợp mình đổi tên Sheet1 thành một tên khác, ví dụ như tên sheet là "THÔNG TIN" thì mình đưa vào đoạn code này như thế nào ạ.
Cảm ơn bạn.
Dạ, mình làm được rồi ạ. Cảm ơn mọi người nhiều. Thật ngại quá.Code như ở bài #4 (hàm GPE) không xài được.
Khi nạp tham số range thì range ấy đã thuộc về một sheet nhất định rồi. Đổi sang sheet tự chọn chả có nghĩa lý gì cả.
Muốn tuỳ chọn sheet thì phải chỉnh lại, chỉ nạp vào địa chỉ range.
WorkSheets("Tên sheet).Range("địa chỉ range") sẽ cho ra một range xác định nằm trong sheet tuỳ chọn.