Tìm các ô chứa công thức dưới dạng link dữ liệu tới các Sheet hoặc các Workbook khác và thay thế bằng chính dữ liệu của ô đó

Liên hệ QC

tungstchn

Thành viên mới
Tham gia
7/10/19
Bài viết
18
Được thích
3
Vâng mục đích thì như tiêu đề ạ. E lọ mọ làm cái code bên dưới, nó đã thay đc như mong muốn nhưng vẫn lỗi "objec variable or with block variable not set" cái đoạn chữ đỏ ý ạ. Các bác giúp e với ạ. Cảm ơn các bác nhiều!!!!
Sub thu_nghiem()
Do While Cells.Find(What:="!", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Value <> "0"

Cells.Find(What:="!", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Loop
End Sub
 
Lần chỉnh sửa cuối:
Đã mò ra :yahoo::yahoo::yahoo::yahoo::yahoo::yahoo::yahoo:. Code cho bạn nào cần:
Sub thu_nghiem()
Do Until Cells.Find(What:="!", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False) Is Nothing
Cells.Find(What:="!", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Loop
End Sub
 
Upvote 0
Đã mò ra :yahoo::yahoo::yahoo::yahoo::yahoo::yahoo::yahoo:. Code cho bạn nào cần:
Sub thu_nghiem()
Do Until Cells.Find(What:="!", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False) Is Nothing
Cells.Find(What:="!", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Loop
End Sub
Cảm ơn bạn, bạn oi bạn có thể viết nếu như ô nào có Linhk thì viết commet vào ô đó được không hở bạn?
 
Upvote 0
Cảm ơn bạn, bạn oi bạn có thể viết nếu như ô nào có Linhk thì viết commet vào ô đó được không hở bạn?
Tạm thời tôi mới mò mậm đc thế này (chưa hoàn thiện lắm) comment là địa chỉ link của ô như yêu cầu của bạn nhé. Nêu bạn cần gấp thì dùng tạm trong lúc chờ đợi tôi mò mẫm tiếp hoặc có cao thủ nào ngang qua giúp đỡ :))). Do tôi chưa biết code để xác định ô nào có comment rồi, ô nào chưa để giới hạn vòng lặp nên đoạn code sau vẫn sẽ chạy nhưng có 02 vấn đề (khắc phục để dùng tạm thì vẫn đc). 1. toàn bộ các ô có link trong bảng đều phải chưa có comment mới chạy đc; 2. mỗi lần chạy code xong sẽ có 1 bảng thông báo lỗi tắt đi là xong.
Sub thu_nghiem()
Do Until Cells.Find(What:="!", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False) Is Nothing
Cells.Find(What:="!", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Selection.AddComment
Selection.Comment.Visible = False
Selection.Comment.Text Text:=ActiveCell.Formula
Loop
End Sub
 
Upvote 0
Tạm thời tôi mới mò mậm đc thế này (chưa hoàn thiện lắm) comment là địa chỉ link của ô như yêu cầu của bạn nhé. Nêu bạn cần gấp thì dùng tạm trong lúc chờ đợi tôi mò mẫm tiếp hoặc có cao thủ nào ngang qua giúp đỡ :))). Do tôi chưa biết code để xác định ô nào có comment rồi, ô nào chưa để giới hạn vòng lặp nên đoạn code sau vẫn sẽ chạy nhưng có 02 vấn đề (khắc phục để dùng tạm thì vẫn đc). 1. toàn bộ các ô có link trong bảng đều phải chưa có comment mới chạy đc; 2. mỗi lần chạy code xong sẽ có 1 bảng thông báo lỗi tắt đi là xong.
Sub thu_nghiem()
Do Until Cells.Find(What:="!", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False) Is Nothing
Cells.Find(What:="!", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Selection.AddComment
Selection.Comment.Visible = False
Selection.Comment.Text Text:=ActiveCell.Formula
Loop
End Sub
Ôi, hay quá bạn oi
Cảm ơn bạn rất nhiều,
Bạn cố gắng hoàn chỉnh code giúp mọi người nhé bạn.
Chúc bạn buổi tối vui vẻ nhé!
 
Upvote 0
cách đơn giản nhất là break link
 
Upvote 0
Ko biết ý bạn có phải là vào break link trong data\connections ko. Nêu đúng thế thì chỉ loại bỏ đc các liên kết với wbook # thôi, còn ko loại đc các liên kết với các sheet trong cùng wbook bạn ạ.
Bạn oi, cái lấy giá trị của link cũng không quan trọng và hay bằng cái add Comment vào ô link đâu.
Bạn cố gắng hoàn thiện code add comment vào ô liên kết nhé
Chucsc bạn thành công và ngày nhiều niềm vui.
 
Upvote 0
Bạn oi, cái lấy giá trị của link cũng không quan trọng và hay bằng cái add Comment vào ô link đâu.
Bạn cố gắng hoàn thiện code add comment vào ô liên kết nhé
Chucsc bạn thành công và ngày nhiều niềm vui.
Lấy giá trị có quan trong ko còn tùy vào công việc của mỗi ng bạn ạ. Như công việc của tôi thì lấy giá trị lại quan trọng hơn cmt. Đã mò mẫm ra, hy vọng đoạn code sẽ giúp ích cho bạn :v::v::v::v::v::v:. Trước khi chạy code, bạn bôi đen toàn bộ dữ liệu mà bạn muốn làm nhé
Sub thu_nghiem()
Dim bien_bophan, bien_doituong As Range
Set bien_bophan = Selection
For Each bien_doituong In bien_bophan
If Not bien_doituong.Find(What:="!", LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False) Is Nothing Then
bien_doituong.ClearComments
bien_doituong.AddComment
bien_doituong.Comment.Visible = False
bien_doituong.Comment.Text Text:=bien_doituong.Formula
End If
Next bien_doituong
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Ko biết ý bạn có phải là vào break link trong data\connections ko. Nêu đúng thế thì chỉ loại bỏ đc các liên kết với wbook # thôi, còn ko loại đc các liên kết với các sheet trong cùng wbook bạn ạ.
Cách 1: phải viết vba theo thuật toán đổi thành value với các công thức có chứa địa chỉ sheet khác với sheet hiện tại.
Cách 2: nông dân mà đơn giản hơn là move sheet hiện tại sang một new blank, quay lại file cũ break link tới new book đi, rồi lại move new book về book cũ
 
Upvote 0
Web KT
Back
Top Bottom