Có ai biết cách tôi có thể lấy hàm do người dùng xác định để tự đánh giá lại (dựa trên dữ liệu đã thay đổi trong bảng tính) không? Tôi đã thử F9 và phím Shift +F9, nhưng những người không làm việc. Điều duy nhất có vẻ hoạt động là chỉnh sửa ô bằng lệnh gọi hàm và sau đó nhấn Enter. Ý tưởng nào? Tôi dường như nhớ rằng mình có thể làm được điều này ...Làm mới Kết quả Chức năng Excel VBA
Trả lời
Bạn nên sử dụng Application.Volatile
ở phía trên cùng của chức năng của bạn:
Function doubleMe(d)
Application.Volatile
doubleMe = d * 2
End Function
Sau đó nó sẽ đánh giá lại bất cứ khi nào thay đổi bảng tính (nếu tính toán của bạn được thiết lập để tự động).
Được rồi, tự mình tìm thấy cái này. Bạn có thể sử dụng Ctrl + Alt + F9 để thực hiện việc này.
Đây là lựa chọn duy nhất của bạn nếu bạn có Excel 2007 thấy là 'phương pháp Application.Volatile' đã được bổ sung trong Office 2010. –
Một số thông tin thêm về các phím tắt bàn phím F9 để tính trong Excel
- F9 tính toán lại tất cả các bảng tính trong tất cả các workbook mở
- phím Shift + F9 tính toán lại bảng tính tích cực
- Ctrl + Alt + F9 tính toán lại tất cả các bảng tính trong tất cả các workbook mở (Full tính toán lại)
- phím Shift + Ctrl + Alt + F9 xây dựng lại cây phụ thuộc và thực hiện một tính toán lại đầy đủ
Nếu bạn bao gồm TẤT CẢ các tham chiếu đến dữ liệu bảng tính trong danh sách tham số UDF Excel sẽ tính toán lại chức năng của bạn bất cứ khi nào dữ liệu được tham chiếu thay đổi:
Public Function doubleMe(d as variant)
doubleMe=d*2
end Function
Bạn cũng có thể sử dụng Application.Volatile, nhưng điều này có những bất lợi của việc UDF của bạn luôn luôn tính toán lại, ngay cả khi nó không cần phải bởi vì các dữ liệu tham chiếu không thay đổi.
Public Function doubleMe()
Application.Volatile
doubleMe=Worksheets("Fred").Range("A1")*2
end Function
Public Sub UpdateMyFunctions()
Dim myRange As Range
Dim rng As Range
'Considering The Functions are in Range A1:B10
Set myRange = ActiveSheet.Range("A1:B10")
For Each rng In myRange
rng.Formula = rng.Formula
Next
End Sub
Vui lòng giải thích mã một chút. Nó sẽ làm tăng ích lợi khá nhiều. – Trilarion
rng.Formula = rng.Formula giống như nhập một ô và nhấn Enter lần nữa. Nó buộc Excel tính toán lại ô - bao gồm bất kỳ hàm tùy chỉnh nào. –
Nó hoạt động tốt này để Refresh tính toán tốt hơn so với Dải (A: B) .Tính toán
Public Sub UpdateMyFunctions()
Dim myRange As Range
Dim rng As Range
'Considering The Functions are in Range A1:B10
Set myRange = ActiveSheet.Range("A1:B10")
For Each rng In myRange
rng.Formula = rng.Formula
Next
End Sub
Application.Volatile
không hoạt động để tính toán lại công thức có chức năng của riêng tôi bên trong. Tôi sử dụng các chức năng sau: Application.CalculateFull
- 1. Ouput chức năng kết quả tính toán cho nhiều tế bào trong Excel bằng VBA
- 2. Chức năng mảng trong Excel VBA
- 3. Trả lại kết quả regex trong VBA (excel)
- 4. Excel 2003 VBA - chức năng kernel32 - và libs khác
- 5. Chức năng Dir trong Excel 2010 VBA không hoạt động
- 6. chức năng vba: trả về chuỗi với dòng mới
- 7. Chạy chức năng VBA excel khi trang tính được bấm
- 8. Chức năng gọi hàm VBA Excel có tên biến
- 9. Sử dụng chức năng "Ô" ở excel vba
- 10. Chức năng Excel VBA trả về một mảng
- 11. Ngắt kết quả chức năng
- 12. Chức năng băm MD5 trong excel?
- 13. Chuỗi VBA Excel VBA
- 14. Kết nối Excel với PostgreSQL qua VBA
- 15. excel vba: Các loại đặc biệt - Chức năng làm đối số của hàm
- 16. Làm thế nào để lập trình mã một chức năng 'hoàn tác' trong Excel-Vba?
- 17. Kết hợp hai kết quả chức năng phạm vi
- 18. Excel chức năng
- 19. Làm mới kết quả ActiveRecord
- 20. Excel VBA - chức năng QueryTable AfterRefresh không được gọi sau khi Refresh hoàn thành
- 21. Chức năng Dir() không hoạt động trong Mac Excel 2011 VBA
- 22. Chức năng Excel PMT trong JS
- 23. Chức năng Excel VBA tạo #REF tùy thuộc vào tên hàm?
- 24. Excel VBA - Thực hiện chức năng cho mỗi tế bào trong phạm vi
- 25. Chức năng VBA Excel để trả về kích thước tệp theo byte
- 26. Cách lấy địa chỉ ô có chức năng VBA trong trang tính Excel
- 27. Xử lý lỗi Excel VBA - đặc biệt là trong các chức năng - Phong cách phát triển Excel chuyên nghiệp
- 28. Haskell chức năng sàn trả về kết quả khác nhau
- 29. Kết quả không mong muốn từ chức năng giảm bớt
- 30. Array trong excel vba
Đó là tuyệt vời, tôi đã không biết rằng, nhờ một bó –
Cảm ơn, chỉ cần bashing đầu của tôi chống lại một bàn trên này. Nên chỉ ra rằng mặc dù trong Excel 2010, bạn cần phải chuyển True thành Application.Volatile, tức là 'Application.Volatile True'. – mdm
THANK. BẠN. Tôi sẽ mua bia cho bạn nếu tôi có thể! –