Cách tùy biến Within trong lệnh Find bằng VBA?

Liên hệ QC

loi.havan

Thành viên mới
Tham gia
1/9/07
Bài viết
8
Được thích
0
Xin các cao thủ chỉ giáo cách tùy biến Within (Sheet hay Workbook) trong lệnh Find/Replace bằng VBA?
 
Tuỳ biến này ai biết chỉ giúp nhé.
Nếu trên Sheet thì bình thường. Nếu trên WorkBook thì bạn dùng lệnh Find/Replace kết hợp với
For Each mySheet In WorkSheets
....... Find/Replace...
...
Next mySheet

TDN
 
Upvote 0
tedaynui đã viết:
Tuỳ biến này ai biết chỉ giúp nhé.
Nếu trên Sheet thì bình thường. Nếu trên WorkBook thì bạn dùng lệnh Find/Replace kết hợp với
For Each mySheet In WorkSheets
....... Find/Replace...
...
Next mySheet

TDN

Cảm ơn bạn đã chỉ giáo, nhưng vấn đề mình hỏi là cách thay đổi tùy biến Within (Sheet hay Workbook), cách của bạn không giải quyết được. Mình ví dụ nhé, nếu có một ai đó sử dụng Excel trước mình mà sử dụng lệnh Find/Replace trong cả Workbook, sau đó mình dùng VBA mà muốn dùng lệnh Find/Replace chỉ trong Sheet thôi thì nó vẫn cứ tìm trong cả Workbook, thế là kết quả sẽ sai hết mặc dù mình đã Active cái Sheet cần tìm.
Cao thủ nào biết chỉ giáo cho nhé, Thanks.
 
Upvote 0
loi.havan đã viết:
Cảm ơn bạn đã chỉ giáo, nhưng vấn đề mình hỏi là cách thay đổi tùy biến Within (Sheet hay Workbook), cách của bạn không giải quyết được. Mình ví dụ nhé, nếu có một ai đó sử dụng Excel trước mình mà sử dụng lệnh Find/Replace trong cả Workbook, sau đó mình dùng VBA mà muốn dùng lệnh Find/Replace chỉ trong Sheet thôi thì nó vẫn cứ tìm trong cả Workbook, thế là kết quả sẽ sai hết mặc dù mình đã Active cái Sheet cần tìm.
Cao thủ nào biết chỉ giáo cho nhé, Thanks.

Nếu chỉ là activesheet thôi thì bạn bỏ vòng lặp For each đi là được thôi mà
Để chức ăn thì code được viết trên sheet đó luôn.

Còn nếu bạn muốn mặc định là activesheet (bất kỳ) thì (code ở module)

PHP:
For Each mySheet In WorkSheets
         if MySheet.name <> ActiveSheet.Name then exit For
.......Find/Replace...
...
Next

Thân
 
Upvote 0
loi.havan đã viết:
Cảm ơn bạn đã chỉ giáo, nhưng vấn đề mình hỏi là cách thay đổi tùy biến Within (Sheet hay Workbook), cách của bạn không giải quyết được. Mình ví dụ nhé, nếu có một ai đó sử dụng Excel trước mình mà sử dụng lệnh Find/Replace trong cả Workbook, sau đó mình dùng VBA mà muốn dùng lệnh Find/Replace chỉ trong Sheet thôi thì nó vẫn cứ tìm trong cả Workbook, thế là kết quả sẽ sai hết mặc dù mình đã Active cái Sheet cần tìm.
Cao thủ nào biết chỉ giáo cho nhé, Thanks.
Bạn đọc kỹ xem, mình nói nếu dùng trên 1 sheet thì dùng bình thường, tức là bạn không cần cho Find/Replace vào vòng lặp For Each.... Còn muốn tác dụng trên WorkBook thì cho Find/Replace vào vòng lặp For Each...
Bạn có thể làm theo cách của Mr.Hiếu hoặc
Mã:
[COLOR=#000000][COLOR=#007700]If [/COLOR][COLOR=Blue]ActiveSheet[/COLOR][COLOR=Blue].[/COLOR][COLOR=#0000bb]Name [/COLOR][COLOR=#007700]= [COLOR=#0000bb]"ABC"[/COLOR][/COLOR][COLOR=#0000bb] then [/COLOR]
[/COLOR][COLOR=#000000][COLOR=White].......[/COLOR][COLOR=#0000bb]Find[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]Replace[/COLOR][COLOR=#007700]...
[/COLOR][/COLOR][COLOR=#000000][COLOR=#007700][COLOR=White].......[/COLOR].......[/COLOR][/COLOR]
[COLOR=#000000][COLOR=#007700]Else
[COLOR=White]...[/COLOR][/COLOR][COLOR=#0000bb]For Each mySheet In WorkSheets
[/COLOR][COLOR=#007700][COLOR=White].......[/COLOR][/COLOR][COLOR=#0000bb]Find[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]Replace[/COLOR][COLOR=#007700]...
[COLOR=White].......[/COLOR].......
[/COLOR][COLOR=#0000bb][COLOR=White]...[/COLOR]Next
[COLOR=SeaGreen]End if[/COLOR] [/COLOR][/COLOR]
TDN
 
Upvote 0
tedaynui đã viết:
Bạn đọc kỹ xem, mình nói nếu dùng trên 1 sheet thì dùng bình thường, tức là bạn không cần cho Find/Replace vào vòng lặp For Each.... Còn muốn tác dụng trên WorkBook thì cho Find/Replace vào vòng lặp For Each...
Bạn có thể làm theo cách của Mr.Hiếu hoặc
Mã:
[COLOR=#000000][COLOR=#007700]If [/COLOR][COLOR=blue]ActiveSheet[/COLOR][COLOR=blue].[/COLOR][COLOR=#0000bb]Name [/COLOR][COLOR=#007700]= [COLOR=#0000bb]"ABC"[/COLOR][/COLOR][COLOR=#0000bb] then [/COLOR]
[/COLOR][COLOR=#000000][COLOR=white].......[/COLOR][COLOR=#0000bb]Find[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]Replace[/COLOR][COLOR=#007700]...
[/COLOR][/COLOR][COLOR=#000000][COLOR=#007700][COLOR=white].......[/COLOR].......[/COLOR][/COLOR]
[COLOR=#000000][COLOR=#007700]Else
[COLOR=white]...[/COLOR][/COLOR][COLOR=#0000bb]For Each mySheet In WorkSheets
[/COLOR][COLOR=#007700][COLOR=white].......[/COLOR][/COLOR][COLOR=#0000bb]Find[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]Replace[/COLOR][COLOR=#007700]...
[COLOR=white].......[/COLOR].......
[/COLOR][COLOR=#0000bb][COLOR=white]...[/COLOR]Next
[COLOR=seagreen]End if[/COLOR] [/COLOR][/COLOR]
TDN


Cảm ơn các bạn nha.
Vấn đề các bạn chưa thử nên chưa thể giải quyết được. Mình lấy ví dụ thế này nhé:
Giả sử Workbook của mình có 3 sheets tên là Sheet1, Sheet2 và Sheet3. Mình dùng lệnh Find của Excel để tìm kiếm một chuỗi nào đó trong toàn Workbook (tùy biến Within ở đây là Workbook). Sau đó mình lại dùng VBA để chạy một hàm nào đó có sử dụng lệnh Find để tìm một chuỗi chỉ trong Sheet2 chẳng hạn (Sheet2 đã được Active) nhưng kết quả là nó sẽ tìm kiếm cả trong Workbook vì tùy biến Within dùng trong Excel mà mình dùng trước đó là Workbook, vậy kết quả sẽ sai. Các bạn hãy thử xem và giúp mình nhé.
 
Upvote 0
'Here you go...
Dim ws as worksheet ' Only do search on this worksheet
Dim return as integer ' value return
return = ws.Range("A1:Z5000").Find("SEARCH STRING", Range("A1"), xlValues, xlWhole, xlByColumns, xlNext).row ' return the row if "SEARCH STRING" exist on sheet
'OR
return = ws.Range("A1:Z5000").Find("SEARCH STRING", Range("A1"), xlValues, xlWhole, xlByColumns, xlNext).column ' return the column if "SEARCH STRING" exist on sheet
 
Upvote 0
Chao các bạn.
Cho mình hỏi ý kiến các bạn tí nhé.
Mình tạo một Form trong đó có ComboBox1. Mình muốn ComboBox1 thể hiện nội dung của một mảng tại một sheet khác file excel khác.
Ví dụ đó là file Dinh muc DM1776 (Phan xay dung).xls, Sheet là TDCV và mình đặt tên mảng là TDCV.
Khi mình viết đoạn code sau thi trong hộp combóbo này không thể hiện giá trị nào cả.
Mong các bạn giúp đỡ.
Private Sub ComboBox1_Change()
Dim MyRange As Range
Set MyRange = Workbooks("Dinh muc DM1776 (Phan xay dung).xls").Worksheets("TDCV").Range("TDCV")
ComboBox1.List = MyRange
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom