Thử:Xin chào các ace! Mình xin hỏi nếu muốn thay thế "&cụm từ bất kỳ &" thành "cụ từ bất kỳ" thì phải làm sao (tức là chỉ bỏ & &). Mình không biết trong phần .Replacement.Text = "?" phải thay dấu ? thành gì? Xin cảm ơn!
Sub abc()
With Selection.Find
.Text = "&"
.Replacement.Text = ""
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Cảm ơn bạn nhưng nhiều chỗ có &..& mình cần giữ lại nên phải làm vậy. VD: &234& thành 234 và nhiều số khác nữa. Nhưng &xyz& thì mình vẫn giũa nguyên là &xyz&. Xin nhờ bạn giúp đỡ.Thử:
PHP:Sub abc() With Selection.Find .Text = "&" .Replacement.Text = "" End With Selection.Find.Execute Replace:=wdReplaceAll End Sub
Qui tắc luôn phải phát biểu và phải nói toẹt ra. Ví dụ chỉ là thêm vào nếu cần thiết, không thể thay cho mô tả.Cảm ơn bạn nhưng nhiều chỗ có &..& mình cần giữ lại nên phải làm vậy. VD: &234& thành 234 và nhiều số khác nữa. Nhưng &xyz& thì mình vẫn giũa nguyên là &xyz&. Xin nhờ bạn giúp đỡ.
Sub xoa()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Forward = True
.Wrap = wdFindContinue
.MatchWildcards = True
.Text = "&([0-9]{1;})&"
.Replacement.Text = "\1"
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Xin cảm ơn bạn tốt rất nhiều. Dấu phẩy là chính xác bạn à.Qui tắc luôn phải phát biểu và phải nói toẹt ra. Ví dụ chỉ là thêm vào nếu cần thiết, không thể thay cho mô tả.
Phát biểu: Ta tìm tất cả các đoạn có dạng "&một chuỗi chữ số, ít nhất là có 1 chữ số&" và thay bằng "một chuỗi chữ số, ít nhất là có 1 chữ số" - tức xóa & ở đầu và cuối.
Yêu cầu như tôi phát biểu? Nếu thế thì code
Mã:Sub xoa() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Forward = True .Wrap = wdFindContinue .MatchWildcards = True .Text = "&([0-9]{1;})&" .Replacement.Text = "\1" End With Selection.Find.Execute Replace:=wdReplaceAll End Sub
Nếu chỉ xét chuỗi có >= 1 và <= 5 chữ số thì .Text = "&([0-9]{1;5})&"
Nếu chỉ xét chuỗi có đúng 7 chữ số thì .Text = "&([0-9]{7})&"
Trên máy tôi trong ngoặc {} luôn là dấu ; - chấm phẩy. Tôi không biết luôn là thế hay không. Nếu cần thì thử thay bằng , - dấu phẩy.
Là thế nào? Là chỉ 7^3 hay a^3 vỡi a là số bất kỳ? Nói rõ ra chứ.Xin hỏi thêm là mình có 7^3 và muốn đưa về đặng mũ bình thường trong các sách (ctrl shift +) thì câu lệnh là gì? Xin cảm ơn!
À vâng là a^3 làm sao để thành a³ đó ạ. Tại mình nghĩ là nó sẽ giống nhau.Là thế nào? Là chỉ 7^3 hay a^3 vỡi a là số bất kỳ? Nói rõ ra chứ.
Và đưa về dạng 7³, a³?
Bạn tham khảo bài viết:À vâng là a^3 làm sao để thành a³ đó ạ. Tại mình nghĩ là nó sẽ giống nhau.
Mình dùng trong VBA trong Word ạ. Mình không biết cso áp dụng kiến thức bạn đưa vào word khôngBạn tham khảo bài viết:
Link
Vấn đề này thì tôi không biết, thông cảm bạn nhé.Mình dùng trong VBA trong Word ạ. Mình không biết cso áp dụng kiến thức bạn đưa vào word không
Tôi không thử nhưng bạn thử xemÀ vâng là a^3 làm sao để thành a³ đó ạ. Tại mình nghĩ là nó sẽ giống nhau.
...
.Text = "([0-9]{1;})^3"
.Replacement.Text = "\1" & ChrW(179)
...
...
.Text = "(*)^3"
.Replacement.Text = "\1" & ChrW(179)
...
Máy nó không hiểu dòng lệnh .Text = "([0-9]{1;})^3" và dòng lệnh .Text = "(*)^3" thầy ơiTôi không thử nhưng bạn thử xem
Mã:... .Text = "([0-9]{1;})^3" .Replacement.Text = "\1" & ChrW(179) ...
hoặc
Mã:... .Text = "(*)^3" .Replacement.Text = "\1" & ChrW(179) ...
Hôm qua Word bị hỏng nên tôi không thử được.Máy nó không hiểu dòng lệnh .Text = "([0-9]{1;})^3" và dòng lệnh .Text = "(*)^3" thầy ơi![]()
Sub chuyen()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Forward = True
.Wrap = wdFindContinue
.Text = "^"
.Replacement.Text = "@"
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "@3"
.Replacement.Text = ChrW(179)
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Xin cảm ơn bạn rất nhiềuHôm qua Word bị hỏng nên tôi không thử được.
Đọc thấy là ^ không thuộc tập ký tự đặc biệt nhưng lại không dùng được.
Có lẽ do Word dùng ^, vd. ^p, ^n, ^13 v...v
Thôi thì tạm đi đường vòng
Mã:Sub chuyen() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Forward = True .Wrap = wdFindContinue .Text = "^" .Replacement.Text = "@" End With Selection.Find.Execute Replace:=wdReplaceAll With Selection.Find .Text = "@3" .Replacement.Text = ChrW(179) End With Selection.Find.Execute Replace:=wdReplaceAll End Sub
Eureka ...Thôi thì tạm đi đường vòng
[/code]
Sub thaythe()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.MatchWildcards = False
.Forward = True
.Wrap = wdFindContinue
.Text = "^^2"
.Replacement.Text = ChrW(178)
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.MatchWildcards = False
.Forward = True
.Wrap = wdFindContinue
.Text = "^^3"
.Replacement.Text = ChrW(179)
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Cảm ơn anh rất nhiều! câu lệnh lần trước chưa dùng được nhưng em chưa dám hỏi thêm. Hôm nay lên đã thấy câu trả lời mới. Em sẽ thử xemEureka ...
Để tìm các ký tự đặc biệt, vd. @, ?, *, \, thì chỉ cần thêm trước ký tự đó ký tự \. Nhưng để tìm ký tự ^ thì không thể chỉ nhập ^ và cũng không thể nhập \^. Để tìm ^ thì phải nhập ^^
Code ở dưới thay cả ^2 thành ². Tức thay "Bán căn hộ 100 m^2 và 10 m^3 gỗ" bằng "Bán căn hộ 100 m² và 10 m³ gỗ". Nếu không cần đoạn nào thì xóa đi.
Mã:Sub thaythe() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .MatchWildcards = False .Forward = True .Wrap = wdFindContinue .Text = "^^2" .Replacement.Text = ChrW(178) End With Selection.Find.Execute Replace:=wdReplaceAll With Selection.Find .MatchWildcards = False .Forward = True .Wrap = wdFindContinue .Text = "^^3" .Replacement.Text = ChrW(179) End With Selection.Find.Execute Replace:=wdReplaceAll End Sub
a đâu có là chữ số???Cảm ơn anh rất nhiều! câu lệnh lần trước chưa dùng được nhưng em chưa dám hỏi thêm. Hôm nay lên đã thấy câu trả lời mới. Em sẽ thử xem
Anh cho em hỏi bấy giờ em chỉ muốn chuyển đoan &chữ số bất kỳ = chữ số tùy ý$ thành chữ số bất kỳ = chữ số tùy ý thì phải làm thế nào ạ.
VD: &a=5& chuyển thành a=5 (tức là mất &&) nhưng những chỗ có && khác không bị ảnh hưởng ạ. Em đã thử replace nhưng không được, chắc là do dấu "=". Cảm ơn anh!
Sub thaythe()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.MatchWildcards = True
.Forward = True
.Wrap = wdFindContinue
.Text = "&([0-9] = [0-9])&"
.Replacement.Text = "\1"
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Sub thaythe()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.MatchWildcards = True
.Forward = True
.Wrap = wdFindContinue
.Text = "&([0-9]{1;} = [0-9]{1;})&"
.Replacement.Text = "\1"
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
hoặc
Sub thaythe()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.MatchWildcards = True
.Forward = True
.Wrap = wdFindContinue
.Text = "&([0-9]@ = [0-9]@)&"
.Replacement.Text = "\1"
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Thực ra là "chữ" chứ không phải "chữ số " ạ. Nhưng em đã làm được rồi. Cảm ơn thầy nhiềua đâu có là chữ số???
Code ở bài #14 và #16 tôi kiểm tra đàng hoàng rồi mới gửi. Nếu bạn làm không được thì cũng chịu. Tôi dùng Office 2010.
Nhưng nhiều khi chạy thấy đúng, nhiều khi sau đó thử cái khác thấy chạy sai quay về cái chạy đúng thì lại thấy sai. Nhưng lúc đó lưu lại rồi đóng Word rồi mở lại tập tin và chạy thì lúc này lại đúng. Nói chung tôi không hiểu tính khí thất thường của Word.
Với bài này - trước và sau dấu = có dấu cách:
Mã:Sub thaythe() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .MatchWildcards = True .Forward = True .Wrap = wdFindContinue .Text = "&([0-9] = [0-9])&" .Replacement.Text = "\1" End With Selection.Find.Execute Replace:=wdReplaceAll End Sub
Nếu nhiều chữ số thì
Mã:Sub thaythe() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .MatchWildcards = True .Forward = True .Wrap = wdFindContinue .Text = "&([0-9]{1;} = [0-9]{1;})&" .Replacement.Text = "\1" End With Selection.Find.Execute Replace:=wdReplaceAll End Sub hoặc Sub thaythe() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .MatchWildcards = True .Forward = True .Wrap = wdFindContinue .Text = "&([0-9]@ = [0-9]@)&" .Replacement.Text = "\1" End With Selection.Find.Execute Replace:=wdReplaceAll End Sub
1; và 1, không phải là phụ thuộc vào office.PS: Có lẽ là W2010 và 2013 khác nhau 1 chút ạ 1; là 1, mới chạy được