Chỉ cách xóa công thức từ VBA

Liên hệ QC

thanhtam348

Thành viên thường trực
Tham gia
9/3/07
Bài viết
288
Được thích
62
Khi VBA đã thực thi xong một công thức và cho kết quả, nếu muốn xóa công thức đó đi chỉ còn lại giá trị của kết quả thôi thì phải điền thêm vào code như thế nào? nhờ các bạn cho xin. Cám ơn trước nhé!
 
Bạn thể viết thêm code để Copy và Pastespecial Paste:=xlPasteValues vào chính ô đó.
 
Upvote 0
Bạn có thể chỉ cho mình chi tiết hơn đi! nói thật là mình mới nhấp nhem về VBA
 
Upvote 0
thanhtam348 đã viết:
Khi VBA đã thực thi xong một công thức và cho kết quả, nếu muốn xóa công thức đó đi chỉ còn lại giá trị của kết quả thôi thì phải điền thêm vào code như thế nào? nhờ các bạn cho xin. Cám ơn trước nhé!

- Vùng data có công thức chọn Copy bình trường.
- Nơi cần in Paste Special -> Value, không cần dùng đến VBA.
 
Upvote 0
thanhtam348 đã viết:
Bạn có thể chỉ cho mình chi tiết hơn đi! nói thật là mình mới nhấp nhem về VBA
Ví dụ với ô B5
Mã:
Range("B5").Copy
Range("B5").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
 
Upvote 0
Khi VBA đã thực thi xong một công thức và cho kết quả, nếu muốn xóa công thức đó thì

Chao ban,
Sau khi VBA truy xuat du lieu ra, neu van con cong thuc gia su o cot D va E ban them doan ma sau la het ngay, chuc ban thanh cong.

Columns("D:E").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
 
Upvote 0
Không biết tôi còn gặp lổi do đâu mà những chỉ dẩn trên tôi làm mãi không được, code vẩn lổi chạy không được.
Đoạn công thức sau đây nhờ các bạn kiểm tra dùm:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 9 Then Range("U" & Target.Row) = "=IF(RC[-14]=0,"""",(IF(WEEKDAY(RC[-17])=1,VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11])*0.5))+VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11]))"

If Target.Column = 10 Then Range("U" & Target.Row) = "=IF(RC[-14]=0,"""",(IF(WEEKDAY(RC[-17])=1,VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11])*0.5))+VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11]))"
End Sub
 
Upvote 0
Ah tại bạn không kết thúc lệnh thực hiện của hàm if. Bạn phải dùng End if.
If Target.Column = 9 Then Range("U" & Target.Row) = "=IF(RC[-14]=0,"""",(IF(WEEKDAY(RC[-17])=1,VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11])*0.5))+VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11]))"

If Target.Column = 10 Then Range("U" & Target.Row) = "=IF(RC[-14]=0,"""",(IF(WEEKDAY(RC[-17])=1,VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11])*0.5))+VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11]))"
End if
End if
End Sub
 
Upvote 0
Công thức hàm tôi vẩn sử dụng bình thường, nhưng khi tôi kết hợp để xóa công thức như dưới đây thì nó bị lổi:
If Target.Column = 9 Then Range("U" & Target.Row) = "=IF(RC[-14]=0,"""",(IF(WEEKDAY(RC[-17])=1,VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11])*0.5))+VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11]))"

If Target.Column = 10 Then Range("U" & Target.Row) = "=IF(RC[-14]=0,"""",(IF(WEEKDAY(RC[-17])=1,VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11])*0.5))+VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11]))"


Columns("U:Y").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False


End if
End Sub
Các bạn giùm xem lổi do đâu sửa dùm . Cám ơn!
 
Upvote 0
Bạn viết lại như sau xem thử có kết quả không:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Column = 9 Then Range("U" & Target.Row) = "=IF(RC[-14]=0,"""",(IF(WEEKDAY(RC[-17])=1,VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11])*0.5))+VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11]))"
If Target.Column = 10 Then Range("U" & Target.Row) = "=IF(RC[-14]=0,"""",(IF(WEEKDAY(RC[-17])=1,VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11])*0.5))+VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11]))"
Columns("U:Y").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Cells(1, 1).Select
Application.ScreenUpdating = True
End Sub
 
Upvote 0
Vẩn không được kết quả, bạn còn cách nào không?
 
Upvote 0
Cụ thể là sao? Còn báo lỗi không? Bạn gởi file mới dễ thấy hơn.
 
Upvote 0
File tôi làm dùng thường thì nặng kinh khủng, không biết phải gởi sao, vì vậy mới cần VBA cho nhẹ bớt.
Cụ thể là code công thức vẩn hoạt động bình thường nếu không có các đoạn sau vào, như:
Columns("U:Y").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Cells(1, 1).Select
Application.ScreenUpdating = True
End Sub
Nếu thêm vào các phần nầy thì nó lổi code, trong khi đó tôi cũng đang cần các đoạn này cho nhẹ file bớt!
 
Upvote 0
Nếu có file thì dễ hơn
If Target.Column = 9 Then Range("U" & Target.Row) = "=IF(RC[-14]=0,"""",(IF(WEEKDAY(RC[-17])=1,VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11])*0.5))+VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11]))"
Thêm câu sau thử xem
Range("U" & Target.Row).value=Range("U" & Target.Row).value
 
Upvote 0
Nếu có file thì dễ hơn
If Target.Column = 9 Then Range("U" & Target.Row) = "=IF(RC[-14]=0,"""",(IF(WEEKDAY(RC[-17])=1,VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11])*0.5))+VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11]))"
Thêm câu sau thử xem
Range("U" & Target.Row).value=Range("U" & Target.Row).value
 
Upvote 0
Có đoạn nầy thì có lẻ ổn hơn nhưng nó không kết thúc lệnh được:
If Target.Column = 9 Then Range("U" & Target.Row) = "=IF(RC[-14]=0,"""",(IF(WEEKDAY(RC[-17])=1,VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11])*0.5))+VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11]))"
Columns("U:Y").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End Sub
Vậy các bạn thấy có thể thêm gì được không?
 
Upvote 0
Columns("U:Y").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Cells(1, 1).Select
Application.ScreenUpdating = True
End Sub
Chào bạn!
Tui cũng mới nhấm nháp VBA thôi, nên cũng ko biết gì nhiều. Chỉ xin góp chút ý nhỏ như trên thôi. K biết có phải nguyên nhân đó ko?
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn hãy thử thêm một lần nữa:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Column = 9 Then Range("U" & Target.Row) = "=IF(RC[-14]=0,"""",(IF(WEEKDAY(RC[-17])=1,VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11])*0.5))+VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11]))"
If Target.Column = 10 Then Range("U" & Target.Row) = "=IF(RC[-14]=0,"""",(IF(WEEKDAY(RC[-17])=1,VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11])*0.5))+VLOOKUP(RC[-14],DSLuong,RC[-16]+29,0)*(RC[-12]+RC[-11]))"
If Target.Column = 9 Or Target.Column = 10 Then
Columns("U:Y").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Cells(1, 1).Select
Application.ScreenUpdating = True
End If
End Sub
 
Upvote 0
funnyzui đã viết:
Chào bạn!
Tui cũng mới nhấm nháp VBA thôi, nên cũng ko biết gì nhiều. Chỉ xin góp chút ý nhỏ như trên thôi. K biết có phải nguyên nhân đó ko?
Cám ơn, nhưng đoạn code của bạn cũng không hiệu quả rồi.
voda đã viết:
Bạn hãy thử thêm một lần nữa:
Đoạn code của bạn giờ thì dứt lệnh được , nhưng vừa kích vào dãy cột bất kỳ thì code hoạt động trong lúc chưa nhập được số liệu. Nếu có cách bạn chỉnh thêm dùm tí nửa cho.!$@!!
 
Upvote 0
Web KT

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

Back
Top Bottom