سؤال

لدي بعض جداول بيانات 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top