Excel VBA إعادة حساب التحديد
سؤال
لدي بعض جداول بيانات Excel التي تضرب قاعدة البيانات بشدة (100+ استعلامات مقابل جدول دفتر الأستاذ العام ... Yikes!). منعش فقط ورقة أنا على (SHIFT + F9) مفيدة في بعض جداول البيانات، لكنني أردت وسيلة لتحديث الخلايا المحددة فقط. لقد توصلت إلى التعليمات البرمجية التالية، وضعت في كائن ThisWorkBook:
Dim currentSelection As String
Private Sub Workbook_Open()
Application.OnKey "+^{F9}", "ThisWorkbook.RecalculateSelection"
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
currentSelection = Target.Address
End Sub
Private Sub RecalculateSelection()
Range(currentSelection).Calculate
End Sub
إذا أمكن، أود أن أجعل هذا أكثر محمولة، مثل تخزينه في ملف XLA وتحميله كإضافة Excel. هل هذا ممكن مع الطريقة التي أستخدمها؟ هل هناك طريقة أفضل لتحقيق هذا؟
المحلول
يجب أن تكون قادرا على استخدام ما يلي:
Public Sub RecalculateSelection()
Dim rng As Range
Set rng = Application.Selection
rng.Calculate
End Sub
يجب عليك وضع بعض الأخطاء في التعامل حول خط "تعيين RNG"، حيث ربما لم يكن المستخدم قد حدد نطاقا (على سبيل المثال، ربما يكون قد حددوا مخططا).
باستخدام كائن التطبيق، لا تحتاج إلى التقاط حدث WorkBook_ShetSelectionChange.
نصائح أخرى
إذا كنت تستخدم الطريقة من الإجابة المقبولة أعلاه، يجب عليك التحقق من ذلك أولا ...
If Not Selection Is Nothing Then
If TypeName(Application.Selection) = "Range" Then
Dim Rng As Range
Set Rng = Application.Selection
Rng.Calculate
End If
End If
كما قد ترغب في إضافتها إلى قوائم سياق الورقة والصفائح. اسم Commandbars الذي تحتاج إلى القيام به ... "خلية" و "رقائق"
إذا كنت ترغب فقط في إعادة حساب الخلايا المحددة حاليا، فالتجاهل الخلايا التي تعتمد عليها، يمكنك استخدام Addin Rangecalc الخاص بي، وقابل للتحميل منhttp://www.decisionmodels.com/downloads.htm.