Cách xác định vị trí của một ô trong VBA (1 người xem)

Liên hệ QC

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

baihocdt

Thành viên hoạt động
Tham gia
1/2/11
Bài viết
106
Được thích
11
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.
 
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.
Mình xin gửi file đính kèm ạ
 

File đính kèm

Upvote 0
Bạn thử xem đúng ý ko?
Dạ đúng rồi bạn.
Nhưng bạn giúp mình thêm một chút nữa nhé.
Bạn bổ sung thêm giúp mình 2 biến Row và Col . Đầu ra của hàm là gán giá trị vị trí của Dòng và Cột vào 2 biến đó.
Mình cần lấy riêng giá trị của Dòng và Cột để dùng cho 1 hàm khác.
Cảm ơn bạn.
 
Upvote 0
Bạn thử xem đúng ý chưa nhé

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
 

File đính kèm

Upvote 0
Bạn thử xem đúng ý chưa nhé
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
 
Upvote 0
Upvote 0
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.
Bạn ở đây lâu quá rồi mà không biết rằng đó là kiểu cũ của GPE?
Lục mấy bài 10 năm trước ra xem thử.
 
Upvote 0
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 ạ.
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)
 
Upvote 0
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)
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 ạ.
 
Upvote 0
để 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.
Nghĩ sai bét. Boolean dài 2 bytes.

Thuở xa xưa, mấy cái regissters của CPU chúng chỉ có 8 bít. Người ta có thói quen dùng byte cho số nhỏ.

Ngày nay, với kỹ thuật lần địa chỉ 32 và 64 bít, số Long là số hữu hiệu nhất.
 
Upvote 0
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)
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.
 
Upvote 0
Bạn bé-phèn mắc nghẹn rồi.
Từ đầu đã nghi loại câu hỏi "mở đầu là vài giọt nước, cuối cùng là cả dòng Trường Giang".
 
Upvote 0
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.
Có cái hình bự chà bá ở bài trước kìa.
Worksheet("THONGTIN")
 
Upvote 0
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.
 
Upvote 0
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.
Dạ, mình làm được rồi ạ. Cảm ơn mọi người nhiều. Thật ngại quá.
 
Upvote 0

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

Back
Top Bottom