Câu lệnh VBA để tìm kiếm 1 hoặc nhiều Sheet

  • Thread starter Thread starter a10
  • Ngày gửi Ngày gửi
Liên hệ QC

a10

Thành viên mới
Tham gia
6/4/12
Bài viết
20
Được thích
1
Mình muốn tạo 1 macro tìm kiếm và thay thế nhưng k hiểu về Visual Basic nên muốn nhờ bạn nào biết thì chỉ bảo dùm
Mình có 1 file có rất nhiều sheet trong đó có 1 sheet khác tất cả các sheet còn lại (Ví dụ là Sheet 1)
Khi mở file của mình luôn mặc định ở Sheet 1
Mình dùng Office 2010
Yêu cầu:
(1) Đứng tại Sheet 1 dùng lệnh tìm kiếm thay thế từ "ABC" thành "ABC+"
(2) Sau đó đổi toàn bộ những sheet nào có chữ "yêu cầu" thành "yêu cầu +"
Mình tạo được cái macro theo yêu cầu (1) nhưng đến cái (2) thì chịu mà phải làm thủ công thay thế hàng loạt bằng tay (cái này còn nhiều từ khác nữa chứ k phải chỉ có 1 chữ nên mình mới cần phải có Macro)
Rất mong bạn nào biết xin hướng dẫn cách làm hoặc cho xin đoạn mã để mình chỉ cần thay từ vào là làm được
Xin cảm ơn các bạn
[h=3][/h]
 

File đính kèm

Bạn muốn được trợ giúp thì cũng phải có file số liệu tương đối đầy đủ một tý. Bạn nói có nhiều từ mà sao chỉ thấy mỗi chữ yêu cầu, bạn Replace đi cho khỏe.
Mình cũng là người mới đôi điều nhắn đến bạn.
 
Bạn muốn được trợ giúp thì cũng phải có file số liệu tương đối đầy đủ một tý. Bạn nói có nhiều từ mà sao chỉ thấy mỗi chữ yêu cầu, bạn Replace đi cho khỏe.
Mình cũng là người mới đôi điều nhắn đến bạn.
Bạn thông cảm số liệu của mình là file ở cq mà máy cq lại niêm phong cổng USB nên k cóp đc. Mà file mình gửi lên diễn đàn cũng tương đối đầy đủ đấy chứ. Mình cần làm được file đó là OK rồi. Thân !
 
Mình muốn tạo 1 macro tìm kiếm và thay thế nhưng k hiểu về Visual Basic nên muốn nhờ bạn nào biết thì chỉ bảo dùm
Mình có 1 file có rất nhiều sheet trong đó có 1 sheet khác tất cả các sheet còn lại (Ví dụ là Sheet 1)
Khi mở file của mình luôn mặc định ở Sheet 1
Mình dùng Office 2010
Yêu cầu:
(1) Đứng tại Sheet 1 dùng lệnh tìm kiếm thay thế từ "ABC" thành "ABC+"
(2) Sau đó đổi toàn bộ những sheet nào có chữ "yêu cầu" thành "yêu cầu +"
Mình tạo được cái macro theo yêu cầu (1) nhưng đến cái (2) thì chịu mà phải làm thủ công thay thế hàng loạt bằng tay (cái này còn nhiều từ khác nữa chứ k phải chỉ có 1 chữ nên mình mới cần phải có Macro)
Rất mong bạn nào biết xin hướng dẫn cách làm hoặc cho xin đoạn mã để mình chỉ cần thay từ vào là làm được
Xin cảm ơn các bạn
Mắc mớ gì phải xài ma cờ rô, chọn tất cả các sheet và dùng Ctrl +F thì thay 1 nhát là xong hết
 
Mắc mớ gì phải xài ma cờ rô, chọn tất cả các sheet và dùng Ctrl +F thì thay 1 nhát là xong hết
Mình muốn tạo 1 macro bạn à. Bởi vì nó còn có "yêu cầu 1", "yêu cầu 2", "yêu cầu 3".... và nhiều thứ mình cần thay nữa cơ bạn à. Nếu thay như bạn nói thì vẫn là cách mình đang phải thay thủ công đó
Nếu bạn làm được m rất mong được sự giúp đỡ
 
Mình muốn tạo 1 macro bạn à. Bởi vì nó còn có "yêu cầu 1", "yêu cầu 2", "yêu cầu 3".... và nhiều thứ mình cần thay nữa cơ bạn à. Nếu thay như bạn nói thì vẫn là cách mình đang phải thay thủ công đó
Nếu bạn làm được m rất mong được sự giúp đỡ
Vậy thì tạo sẵn 2 cột dữ liệu, từ cần tìm và từ cần thay thế, viết code chạy cái vèo là xong
 
Mình cụ thể hóa í tưởng này như vầy:

Vậy thì tạo sẵn 2 cột dữ liệu, từ cần tìm và từ cần thay thế, viết code chạy cái vèo là xong

Bạn thêm mới 1 trang tính trống. Trang này bạn gán nó cái tên "GPE"; Ở cột [A] bạn lần lượt nhập các từ cần tìm kiếm; & ô bên fải liền kề ta nhập từ cần thay cho nó;
Gán vùng dữ liệu mới nhập của cột [A] này cái tên, như trong macro là 'Thay'
& chạy macro sau:

PHP:
Option Explicit
Sub ThayToanBo()
 Dim Sh As Worksheet, Cls As Range, sRng As Range, Rg0 As Range
 Dim fAdd As String
 Sheets("GPE").Select
 For Each Cls In Range("Thay")
    For Each Sh In ThisWorkbook.Worksheets
        If Sh.Name <> "GPE" Then
            Set sRng = Sh.UsedRange.Find(Cls.Value, , xlFormulas, xlWhole)
            If Not sRng Is Nothing Then
                fAdd = sRng.Address
                Do
                    If Rg0 Is Nothing Then
                        Set Rg0 = sRng
                    Else
                        Set Rg0 = Union(Rg0, sRng)
                    End If
                    Set sRng = Sh.UsedRange.FindNext(sRng)
                Loop While Not sRng Is Nothing And sRng.Address <> fAdd
                If Not Rg0 Is Nothing Then
                    Rg0.Value = Cls.Offset(, 1).Value
                    Set Rg0 = Nothing
                End If
            End If
        End If
    Next Sh
 Next Cls
End Sub

Những mong là khỏi đưa file lên!
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom