كيفية معرفة ما إذا كان تطبيق Excel في وضع خلية تحرير؟

StackOverflow https://stackoverflow.com/questions/221984

  •  03-07-2019
  •  | 
  •  

سؤال

وأنا أكتب على الدين Excel باستخدام COM إمكانية التشغيل المتداخل من صافي. لدي الأمر الذي ينبثق الحوار، ومن الحوار I القيام ببعض الأعمال مثل جمع البيانات من النطاق المستخدم من عدة أوراق. والمشكلة هي أنه إذا كان الخلية في وضع التحرير، وبعض المكالمات التي لست بحاجة لجعل سوف رمي الاستثناءات. أود طريقة لتحديد قبل اليد التي Excel في وضع التحرير، حتى أستطيع أن تحذير المستخدم لإنهاء تحرير الخلية الأولى.

وأي أفكار؟

هل كانت مفيدة؟

المحلول

وهناك خاصية Application.Ready التي من المفترض أن أقدم لكم هذه المعلومات ولكن في واقع الامر لا تعمل بشكل صحيح. انظر هنا لhackaround.

وأنت قد تحتاج أيضا إلى النظر في وضع Application.Interactive = كاذبة بينما كود صافي الخاص بك هو فعل الأشياء فيها.

نصائح أخرى

جرب هذه الوظيفة:

    Function IsInEditMode(ByRef exapp As Excel.Application) As Boolean
        If exapp.Interactive = False Then
            Return False
        Else
            Try
                exapp.Interactive = False
                exapp.Interactive = True

                Return False
            Catch
                Return True
            End Try
        End If
    End Function

وأنت لم تذكر اللغة التي تستخدمها. هو مكتوب SZL وظيفة في VB. منذ أنا باستخدام C # اضطررت الى تحويله. عملت كبيرة. هنا هو ما يعادل C # رمز.

    bool IsInEditMode(ref Microsoft.Office.Interop.Excel.Application exapp)
    {
        if (exapp.Interactive == false)
        {
            return false;
        }
        else
        {
            try
            {
                exapp.Interactive = false;
                exapp.Interactive = true;
                return false;
            }

            catch
            {
                return true;
            }
        }

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