سؤال

في بعض الأحيان ، سأحدث عبر جدول بيانات يعاني من أزرار سحرية أو صناديق قائمة أكبر أو أصغر مع مرور الوقت.

لا شيء في الكود يوجه هذا.

هل عانى أي شخص آخر من هذا الفرح؟

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

المحلول

يبدو أن المشكلة تتعلق بالطريقة التي يتناولها Windows قرارات غير محلية على الشاشات ويمكن تجنبها بعدة طرق

يمكن أن تكون المشكلة كابوسًا كاملاً عندما يحدث ذلك ، لكنه يحدث بشكل متقطع فقط.

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

يبدو أن السبب يرتبط بأي إعداد حيث يتم استخدام الشاشات في شيء آخر غير حلها الأصلي. يمكن أن يحدث هذا بسهولة إذا قام المستخدم بتوصيل شاشة خارجي في جهاز كمبيوتر محمول ولا يختار تكوين الشاشة الناتج بعناية. على سبيل المثال ، إذا تم توصيل جهاز كمبيوتر محمول بجهاز عرض (ربما يكون جهازًا قديمًا به شاشة 1024 من 768 أصليًا) ولكن الكمبيوتر المحمول هو 1280 في 800 ويختار المستخدم إلى ذلك مكرر الشاشة بدلا من تمتد IT (الإعدادات في "الاتصال بجهاز العرض" أو لوحة التحكم "شاشات" في Windows 7) ، والنتيجة هي صورة غير متوقعة وغير مرضية عادة على كلتا الشاشات مع كل من القرارات غير الأصلية. لقد وجدنا أن هذه الإعدادات تقريبا دائما تسبب مشاكل خطيرة في أزرار Excel ، وخاصة عناصر التحكم ActiveX. في بعض الأحيان ، عند النقرات المتكررة ، يتقلصون إلى عدم القدرة على القراءة ؛ في أوقات أخرى تتوسع لتغطية الشاشة بأكملها.

في الغالب ، عندما نوجه المستخدمين باستخدام تمديد إعداد العرض والنتيجة هي شاشتين باستخدام قرارات أصلية ، لا نرى المشكلة.

هناك أيضًا طرق قائمة على الكود لتقليل المشكلة. حاولنا إعادة تعيين موقع وحجم الأزرار وعناصر التحكم عند النقر عليها (مما يضيف الكثير من التعليمات البرمجية الممل إذا كان لديك الكثير من الأزرار). هذا يعمل في بعض الأحيان. لقد حاولنا أيضًا تبديل خاصية Autosize من True إلى False and Back (هذا يعمل يدويًا في وضع المطور) وهذا يعمل على إصلاح المزيد من الحالات ، ولكن ليس كل شيء على ما يبدو.

نصائح أخرى

وجدت أن السبب في أن الناس يفتحون Spreasheet على جهاز يمكن الوصول إليه عبر سطح المكتب عن بُعد ، وهناك اختلاف في دقة الشاشة بين الآلات المحلية والبعيدة. يؤثر هذا على عناصر التحكم المتاحة من صندوق أدوات التحكم ، ولكن حتى الآن لمواجهة المشكلة باستخدام التحكم في زر نماذج المدرسة القديمة ، لذلك فإن إجابتي غير المرضية هي استخدام ذلك.

لقد ابتليت هذا الأمر لسنوات ، وإيقافها. هناك عدد من الإصلاحات حولها ، لكن يبدو أنها تضرب وتفوت. كان لا يزال يحدث في Excel 2010 (يحدث لي مايو 2014) ، ولا يزال يحدث في Excel 2013 من قبل بعض التقارير. أفضل وصف وجدت أن موقفي يطابق على الأقل (Excel 2010 ، لا يوجد RDP ، لا معاينة طباعة) هنا:

Microsoft Excel Support Team Blog: ActiveX and Form Controls يقومون بتغيير حجمها عند النقر عليها أو إجراء معاينة طباعة (في Excel 2010)

(قد لا يساعد هذا لمستخدمي Excel 2013 آسف)

تحرير: إضافة التفاصيل في حالة وفاة Technet Link على الإطلاق ، تقول مقالة Technet:

أولاً ، قم بتثبيت Microsoft Hotfix 2598144 لـ Excel 2010, ، متوفر: هنا.

ثانيا ، إذا كان الأعراض الخاصة بك "يتغير زر ActiveX إلى الحجم غير الصحيح بعد النقر فوقه في ورقة عمل Excel 2010" ، ثم يجب عليك:

  • انقر فوق "ابدأ" ، انقر فوق "تشغيل" ، اكتب Regedit في المربع المفتوح ، ثم انقر فوق "موافق".
  • حدد موقعًا ثم حدد مفتاح التسجيل التالي hkey_current_user software microsoft Office 14.0 excel
  • في قائمة التحرير ، أشر إلى قيمة جديدة ، ثم انقر فوق قيمة DWORD (32 بت).
  • اكتب LegacyArresize ، ثم اضغط على Enter.
  • في جزء التفاصيل ، انقر بزر الماوس الأيمن فوق ArmacyArresize ، ثم انقر فوق تعديل.
  • في مربع بيانات القيمة ، اكتب 1 ، ثم انقر فوق "موافق".
  • محرر تسجيل الخروج.

أو ثانيا ، إذا كان الأعراض الخاصة بك "يتم عرض التحكم في نموذج الزر بشكل غير صحيح في المصنف بعد عرض معاينة الطباعة للمصنف في Excel 2010" ، ثم يجب عليك:

  • انقر فوق "ابدأ" ، انقر فوق "تشغيل" ، اكتب Regedit في المربع المفتوح ، ثم انقر فوق "موافق".
  • حدد موقعًا ثم حدد مفتاح التسجيل التالي: HKEY_CURRENT_USER software Microsoft Office 14.0 Excel Options
  • في قائمة التحرير ، أشر إلى قيمة جديدة ، ثم انقر فوق قيمة DWORD (32 بت).
  • اكتب Multishprint ، ثم اضغط على Enter.
  • في جزء التفاصيل ، انقر بزر الماوس الأيمن فوق الطباعة المتعددة ، ثم انقر فوق تعديل.
  • في مربع بيانات القيمة ، اكتب 1 ، ثم انقر فوق "موافق".
  • حدد مفتاح التسجيل التالي مرة أخرى: HKEY_CURRENT_USER software Microsoft Office 14.0 Excel Options
  • في قائمة التحرير ، أشر إلى قيمة جديدة ، ثم انقر فوق قيمة DWORD (32 بت).
  • اكتب LegacyArresize ، ثم اضغط على Enter.
  • في جزء التفاصيل ، انقر بزر الماوس الأيمن فوق ArmacyArresize ، ثم انقر فوق تعديل.
  • في مربع بيانات القيمة ، اكتب 1 ، ثم انقر فوق "موافق".
  • محرر تسجيل الخروج.

أو ثانيا ، إذا كان الأعراض الخاصة بك "يتم تغيير زر ActiveX إلى حجم غير صحيح في ورقة عمل Excel 2010 بعد عرض معاينة طباعة ورقة العمل" ، ثم يجب عليك:

  • انقر فوق "ابدأ" ، انقر فوق "تشغيل" ، اكتب Regedit في المربع المفتوح ، ثم انقر فوق "موافق".
  • حدد موقعًا ثم حدد مفتاح التسجيل التالي: HKEY_CURRENT_USER software Microsoft Office 14.0 Excel Options
  • في قائمة التحرير ، أشر إلى قيمة جديدة ، ثم انقر فوق قيمة DWORD (32 بت).
  • اكتب LegacyArresize ، ثم اضغط على Enter.
  • في جزء التفاصيل ، انقر بزر الماوس الأيمن فوق ArmacyArresize ، ثم انقر فوق تعديل.
  • في مربع بيانات القيمة ، اكتب 1 ، ثم انقر فوق "موافق".
  • محرر تسجيل الخروج.

حظا طيبا وفقك الله. هذه القضية مثل هذا الألم ...

هذه المشكلة هي في الواقع بسبب حل الشاشة. الأكثر شيوعًا يحدث عندما يتصل المستخدم بجهاز عرض ، أو Webex أثناء استخدام تطبيق Excel.

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

الإصلاحات التي تمت مناقشتها مسبقًا ، وتغيير حجم/ تغيير موضعها بشكل برمجي لضوابط X النشطة بعد النقر فوق أحداث ، أو تعديل السجل (مع D Word LegacyArresize) ، لم تحل المشكلة بالنسبة لي مع Excel 2010/ Windows 7 64 Bit.

تم العثور على الحل بالنسبة لي هنا:https://support.microsoft.com/en-us/kb/838006

لـ Excel 2010 ، يرشد الرابط إلى:

  1. الخروج من جميع البرامج التي تعمل.
  2. انقر فوق ابدأ ، انقر فوق "تشغيل" ، في المربع المفتوح ، اكتب Regedit ، ثم انقر فوق "موافق".
  3. حدد موقعه ، ثم انقر فوق مفتاح التسجيل التالي:
  4. hkey_current_user software microsoft Office 14.0 Common
  5. في قائمة التحرير ، أشر إلى جديد ، ثم انقر فوق المفتاح.
  6. اكتب رسم ، ثم اضغط على Enter.
  7. في قائمة التحرير ، أشر إلى جديد ، ثم انقر فوق قيمة DWORD.
  8. اكتب updatedeviceinfoforemf ، ثم اضغط على Enter
  9. انقر بزر الماوس الأيمن فوق updatedeviceinfoforemf ، ثم انقر فوق تعديل. 10. في مربع بيانات القيمة ، اكتب 1 ، ثم انقر فوق "موافق".
  10. في قائمة الملفات ، انقر فوق "الخروج" لإغلاق محرر التسجيل.

هل يمكن أن يتم تعريف الزر للالتزام بزوايا الخلية ، بدلاً من الطفو بحرية؟

تحقق من ذلك

شكل | الخصائص | تحديد موقع الكائن

واختيار أي شيء سوى "التحرك والحجم مع الخلايا"

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

يبدو أن الكود التالي يعالج المشكلة ، على الأقل بالنسبة للأزرار.

Public Sub StablizeButton(oButton As MSForms.CommandButton)

    With oButton

        ' If True, then temporary distortion is remedied only by clicking somewhere.
        ' If False, then the temporary distortion is remedied merely by moving the mouse pointer away.
        .TakeFocusOnClick = False
        ' For best results:  In the Properties Sheet, initialize to False.

        .Left = .Left + 200             ' Move the button 200 units to the right, ...
        .Left = .Left - 200             ' ... and then move it back.

    End With

End Sub

استدعاءها على النحو التالي:

Private Sub MyButton_Click()
    StablizeButton MyButton

    ' Remainder of code.
End Sub

لقد واجهت هذه المشكلة عدة مرات وللحل الذي فعلت ما يلي:

  1. ابحث من خلال C: Drive لأي ملف مع الامتداد '.exd'
  2. احذف تلك الملفات (لا بأس في القيام بذلك)
  3. قم بتنفيذ الكود الذي يعيد حجم الكائنات ActiveX في كل مرة يتم فتح الورقة

لقد وجدت أن هذه المشكلة تسببت في كل شيء قمنا بتوصيل الكمبيوتر المحمول في جهاز عرض وحفظ الملف. ثم في كل مرة تظهر فيها المشكلة ، ذهبت فقط خطوات متكررة 1. و 2. وكائنات ActiveX كانت تتصرف مرة أخرى

لقد حلنا هذا فقط على مستوى الشركة عن طريق إضافة الوحدة التالية إلى جميع كتاب مصنفات الماكرو الممكّن:

Option Explicit

Type ButtonSizeType
    topPosition As Single
    leftPosition As Single
    height As Single
    width As Single
End Type

Public myButton As ButtonSizeType

Sub GetButtonSize(cb As MSForms.CommandButton)
' Save original button size to solve windows bug that changes the button size to
' adjust to screen resolution, when not in native resolution mode of screen
    myButton.topPosition = cb.top
    myButton.leftPosition = cb.Left
    myButton.height = cb.height
    myButton.width = cb.width
End Sub

Sub SetButtonSize(cb As MSForms.CommandButton)
' Restore original button size to solve windows bug that changes the button size to
' adjust to screen resolution, when not in native resolution mode of screen
    cb.top = myButton.topPosition
    cb.Left = myButton.leftPosition
    cb.height = myButton.height
    cb.width = myButton.width
End Sub

فقط اتصل بهم في بداية ونهاية الكود الخاص بك مثل هذا:

Private Sub CommandButton1_Click()

Application.ScreenUpdating = False
' Turn off ScreenUpdating to make sure the user dosn't see the buttons flicker
GetButtonSize CommandButton1 ' Saves original button size
' Do cool things
'
'
'
SetButtonSize CommandButton1 ' Restores original button size

Application.ScreenUpdating = True
' Turn ScreenUpdating back on when you're done
End Sub

الخيط القديم لكنني كنت أواجه هذه المشكلة وحلها من خلال تجميعها أولاً ، في حالتي ، أزرار الخيار معًا التي كانت تواجه المشكلة ثم ببساطة إعداد (إعادة تعيين) حجم هذه المجموعة في AUTO_OPEN على هذا النحو:

With ThisWorkbook
    .Worksheets("1").Shapes("grpInput").Width = 383.1
    .Worksheets("2").Shapes("grpSuite").Width = 383.1
    .Worksheets("3").Shapes("grpLoc").Width = 383.1
    .Worksheets("4").Shapes("grpDecision").Width = 383.1
End With

Excel Professional Plus 2016 ، 32bits ، الإصدار 1802 ، بناء 9029.2167

كنت أواجه نفس المشكلة و يمكنني حل المشكلة عن طريق تخصيص تحجيم العرض في Windows 10 ، 64 بت. إنه بسيط بسيط ويعمل لمستخدم واحد. ما عليك سوى اتباع الإرشادات أدناه وسيكون لديك جميع عناصر التحكم في النماذج ، وأشكال الألواح ، والأشكال ، وعودة عناصر التحكم ActiveX إلى حجمها الأصلي. لا حاجة لترميز أو القيام بالخداع/المعالج المتقدم/الاختراقات. إذا تم كسر الرابط المقدم ، فما عليك سوى كرر هذه الخطوات.

  1. لتعيين عرض مخصص في نظام التشغيل Windows 10 ، تحتاج إلى القيام بما يلي.

    أفتح الإعدادات.

  2. انتقل إلى الإعدادات - العرض.
  3. على اليسار ، انقر فوق رابط التحجيم المخصص ضمن "المقياس والتخطيط".
  4. سيتم فتح صفحة التخطيط المخصص. حدد قيمة جديدة لقياس النسبة المئوية. [استخدام 100] !! ... وفويلا. إغلاق وإعادة فتح Excel.

إنها منشور قديم ، لكنني آمل أن يساعد أي شخص يتعامل مع مشكلة التفوق المزعجة والتأكيد.

https://winaero.com/blog/set-display-custom-scaling-windows-10/

هذه المشكلة محبطة للغاية ، تجربتي هي أن الخصائص عادة ما يتم ضبطها بشكل صحيح على كائنات ActiveX. لقد قمت بتعديل UDF من الأعلى إلى أن أكون قادرًا على الجري على أي ورقة نشطة ، وهذا سيعيد كل شيء بالطريقة التي كان عليها قبل تقلصها.

Public Sub ResizeAllOfIt()
Dim myCtrl As OLEObject

For Each myCtrl In ActiveSheet.OLEObjects

 Dim originalHeight
 Dim originalWidth

 originalWidth = myCtrl.width
 originalHeight = myCtrl.height

  myCtrl.height = originalHeight - 1 
  myCtrl.height = originalHeight 
  myCtrl.width = originalWidth

Next myCtrl

End Sub

أجرى هذه المشكلة طوال الوقت في Excel 2010 (والتي تعيدني دائمًا إلى هذا الموضوع) وعلى الرغم من أنني لم أجد إصلاحًا بنسبة 100 ٪ ، أعتقد أن لدي بعض المعلومات التي يمكن أن تساعد الآخرين.

بينما كان يلعب حول الأزرار التي اكتشفتها أن الأحداث المختلفة لكل كائن تسبب مشكلات مختلفة. علي سبيل المثال،

  • الزر A - سوف يتقلص حجم الزر في حدث Mousedown
  • الزر ب - سيتم تكبير النص في حدث MouseMove (ولكن فقط بعد النقر فوق الزر. AKA ، AKLA ، انقر فوق زر ، يتم تنفيذ الرمز ، واترك الماوس يحوم فوق الزر ، ثم بمجرد تحريك الماوس. تكبير)
  • مربع إدخال النص A - سيتم تكبير النص في حدث Mouseup
  • مربع إدخال النص B - سيتم تكبير النص في حدث LostFocus

الحل الوحيد الذي يناسبني هو كتابة التعليمات البرمجية لإعادة ضبط الحجم/النص لكل حدث كائن كان يسبب تغيير حجمها العشوائي. مثل ذلك ...

حيث تمثل MaterialNum اسم مربع الإدخال ، و Mousedown هو الحدث ...

Private Sub MaterialNum_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

    ' Reset the size, font style, and size
    With Worksheets("QuoteForm").Shapes("MaterialNum")
        .Height = 21
        .Width = 101.25
        .Left = 972.75
        .Top = 87
        With .DrawingObject.Object.Font
            .Name = "Arial"
            .Size = 12
        End With
    End With

End Sub

بالإضافة إلى ذلك ، اضطررت إلى تغيير بعض الخيارات في التحكم في التنسيق (انقر بزر الماوس الأيمن على الكائن> التحكم في التنسيق):

  • علامة التبويب الحجم: يتم فحص مربع نسبة العرض إلى الارتفاع القفل
  • علامة التبويب خصائص: مربع كائن الطباعة لم يتم التحقق منه

أيضًا ، في جزء خصائص الكائن (CONFORT RUBLE OBJECT> خصائص) قمت بتعيين takefocusonclick على خطأ

نعم ، هذا مضيعة للوقت ومملة لأنه يجب القيام به مع كل كائن ، لكنه الإصلاح الوحيد الذي يعمل بالنسبة لي (ويبدو أنه حل أسرع من انتظار Microsoft لإصلاح هذا !!!). نأمل أن يساعد الآخرين.

آمل أن يجد الآخرون هذا مفيدًا

لقد لاحظت أن أيا من هذه الإجابات ترسخ عنصر التحكم في صف وعمود معين. لقد نجح هذا بشكل نظيف بالنسبة لي لأن الصفوف/الأعمدة تميل إلى أن تكون أكثر قابلية للتنبؤ من دقة الشاشات.

العينة أدناه أساسا "التدابير" حيث يجب أن يذهب الكائن ، ثم يضعه هناك في Worksheet_Activate الشفرة. في المثال أدناه ، سيتم التقاط الزر دائمًا للتغطية D8:F10.

Private Sub Worksheet_Activate()
'Note this is done in the sheet code, not a Module.

   With Me.Shapes("CommandButton1")

       .Left = Me.Range("A1:C1").Width
       .Top = Me.Range("a1:a7").Height
       .Width = Me.Range("D1:F1").Width
       .Height = Me.Range("A8:a10").Height

   End With

End Sub

ستظهر النتيجة كما هو موضح أدناه:

enter image description here

إنه غريب جدا. لا تتقلص خصائص العرض والارتفاع عند الاستعلام (إما في الكود أو باستخدام ورقة الخصائص) ، ولكن يبدو أنها تتغير.

لقد لاحظت أنه إذا استخدمت ورقة الخصائص وقمت بتغيير العرض من المعيار 15 إلى ، على سبيل المثال ، 14 ثم العودة إلى 15 ، فإنه يحددها.

الرمز أدناه يعمل بالنسبة لي (وله تأثير مرئي مسلي على الورقة: أنت تنقر ، يتقلص ، وميض الشاشة ، ويتوسع مرة أخرى).

الحل الخاص بي في الكود (في حدث النقر فوق مربع الاختيار):

Dim myCtrl As OLEObject
For Each myCtrl In ActiveSheet.OLEObjects
  myLab = myCtrl.Name
  myCtrl.Height = 14 ' to "wake up" the property.
  myCtrl.Height = 15 ' to reset it back to normal
  myCtrl.Width = 12 ' just making sure
Next myCtrl

بعد البحث في الشبكة ، فإنه يحظى الحل الأفضل هو حفظ الملف كـ .xlsb (ثنائي) بدلاً من .xlsm

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

لم أختبر هذا ، لكنني أعتقد أن هذا يتعلق بخاصية التكبير (ربما أضف activewindow.Zoom = false).

يمكن أيضًا القيام بحلقة على الأشكال التي تحددها .Placement = xlMove على Workbook_open و Window_activate ، هذا لمنع الأشكال من تغيير حجم الخلايا (ولكن سوف يتحرك معهم).

أنا أستخدم Excel 2013 ولم أواجه هذه المشكلة أبدًا ، كما أنني لم أستخدمها أبدًا عن بعد ... ، فقط أحاول المساعدة في الأفكار الصغيرة

ربما وجدت إصلاحًا: "تأكد من أن جميع الأشكال في ورقة العمل لها أسماء فريدة"(بما في ذلك أزرار الاختيار/أزرار الراديو (عناصر التحكم OLE) وكذلك الصور وأنواع الأشكال الأخرى ...)

لأن المشكلة متقطعة ، لا يمكنني ضمان ذلك. لديّ نموذجان يعملان الآن بشكل جيد باستخدام هذا الإصلاح ، لكن "Two" عبارة عن مجموعة عينة صغيرة جدًا ، ويمكن أن تكون مصادفة. أبدا أقل ، هذه هي الخطوات التي اتخذتها:

لقد أدرجت جميع الأشكال في ورقة المشكلات (WSForm) على ورقة فارغة (ورقة 1):

Sub ListShapes()
Dim spShape As Shape
Dim intRow As Integer


Sheet1.Range("A1:F1") = Array("Name", "Left", "Top", "Width", "Height", "Bottom Right Cell")
intRow = 2

For Each spShape In wsForm.Shapes        

    Sheet1.Cells(intRow, 1).Value = spShape.Name
    Sheet1.Cells(intRow, 2).Value = spShape.Left
    Sheet1.Cells(intRow, 3).Value = spShape.Top
    Sheet1.Cells(intRow, 4).Value = spShape.Width
    Sheet1.Cells(intRow, 5).Value = spShape.Height
    Sheet1.Cells(intRow, 6).Value = spShape.BottomRightCell.Address

    intRow = intRow + 1

Next
End Sub

ثم قمت بحساب كل اسم شكل في العمود A ، باستخدام صيغة في العمود G:

= Countif ($ A 2: $ A 120 $ ، A2)

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

ساعدت قائمة الأشكال هذه أيضًا في العثور على بعض الأشكال "الميتة" (ارتفاع 0 أو عرض 0) والتي تم نسيانها وغير المستخدمة منذ فترة طويلة.

آمل أن يكون هذا يصلح لك! لهذه المسألة ... آمل أن ينجح لي في الحوادث المستقبلية ...

إذا كنت ترغب في عدم إظهار الزر الذي يتحرك ذهابًا وإيابًا ، فيمكنك وضع الموضع الأصلي في الكود الخاص بك ، فما عليك سوى التحقق من ذلك. قم بإيقاف تشغيل تحديث الشاشة عند النقر فوق الزر ، تحقق لمعرفة ما إذا كان الموضع مختلفًا على عنصر التحكم ، وقم بتغييره مرة أخرى ، إذا لزم الأمر ، قم بتحديث الشاشة مرة أخرى

موانئ دبي

بعد تجربة العديد من الحلول في هذا الأمر والمشاركات ذات الصلة ، اكتشفت أن الحل لمشكلة مختلفة نشرتها Microsoft أيضًا بشكل موثوق لهذه المشكلة بالذات عند تطبيقها بطريقة معينة ، على الأقل في السياق الذي أعمل فيه. لقد واجهت هذه المشكلات في دقة أصلية لأجهزة الكمبيوتر المحمولة التي لدينا هنا وعلى جهاز كمبيوتر كلما قمت بالتبديل إلى حل غير أصلي. وهي الأزرار التي يتم تحميلها بحجم أكبر من المعتاد ، والزيادة عند النقر عليها ، والنصوص والصور في هذه الأزرار تتقلص (وعلى الأقل ظل الإعداد للنص كما هو حتى لا أتمكن من رؤية أي طريقة لتغييره مرة أخرى برمجيًا برمجي أو غير ذلك.) هذه لم تكن مشاكل متقطعة في حالتي. لقد واجهت مشاكل متقطعة على الرغم من استخدام Print Preview الذي نشرت Microsoft حلاً لـ هنا. لقد جربت هذا ويبدو أنه يعمل.

الحل: من أجل excel ، أغلق التطبيق وحذف ملف msforms.exd من C:\Users{UserName}\AppData\Local\Temp\Excel8.0 بينما في الدقة التي تريد عرض الأزرار فيها. يمكنك أيضًا البحث عن ملفات .exd أخرى في مجلد AppData Temp المحلي لتطبيقات Office الأخرى.

كما ذكرت ، هذا هو الحل الذي اقترحه Microsoft لمشكلة مختلفة - حيث تتوقف الأزرار عن العمل بعد تثبيت تحديثات Dec '14. إليك الرابط لهذا المقال. في هذه الحالة ، إنه إصلاح لمرة واحدة. هنا ، قد تحتاج إلى القيام بذلك في كل مرة تقوم فيها بتغيير القرارات.

يبدو أن تجميع الضوابط يعمل بالنسبة لي. أود أن أقوم بالتصويت أو التعليق ولكن لن أسمح لي بذلك. لاحظ أن هذه المشكلة تظهر في كثير من الأحيان إذا كنت تستخدم تحجيم عرض W8 ولديك كمبيوتر محمول عالي الدقة وشاشة أقدم.

لقد وجدت هذه المشكلة عبر جميع الكائنات (الأزرار ، مربعات النص ، إلخ). عندما أقوم بطباعة/طباعة معاينة عدة أوراق ، قامت جميع الأوراق باستثناء الأولى في التسلسل بنقل الكائنات أو تغيير حجمها. بعد الكثير من الاختبارات ، أبسط حل في الصفحة تكبير أو لأسفل والعودة إلى الإعداد الأصلي.

واجهت مشكلة أيضًا مع activex listboxes ووجدت ما يلي في مكان آخر ويبدو أنه يعمل حتى الآن ، ويبدو أيضًا أن الحل الأسهل بكثير الذي ينتقل عند تسليم جدول البيانات إلى شخص آخر:

"على الرغم من أن قائمة القائمة لديها خاصية متكاملة ، فإن تأثيرها الجانبي لإعداد كاذب سيمنع هذا التحكم من الانتقال ، وبينما تحتوي أزرار الأوامر على خصائص مثل التحرك/الحجم مع الخلايا ، وما إلى ذلك ، فإن عناصر التحكم الأخرى ليست رشيقة."

ولديهم المزيد من النصائح:http://www.experts-exchange.com/articles/5315/dealing-with-unintended-excel-x-sizing-quirks-vba-code-simulates-self-correction.html

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

الحل الذي عمل من أجله هو تجميع عناصر التحكم ولكن أيضًا ضمان امتداد المجموعة إلى ما وراء منطقة أجزاء التجميد. أقوم بذلك عن طريق إضافة عنصر تحكم خارج منطقة أدوات التجميد ، وأضفه إلى المجموعة ولكن أيضًا إخفاء عنصر التحكم حتى لا تراه.

الآن باستخدام Excel 2013 وهذا يحدث في كل مرة أقوم فيها بتوسيع العرض أثناء تشغيل Excel (وفي كل مرة أقوم فيها بإزالة التمديد).

الإصلاح الذي بدأت في تطبيقه هو استخدام الارتباطات التشعبية بدلاً من الأزرار والآخر لفتح مستخدم مع جميع عناصر التحكم ActiveX الأخرى.

أضف هذا الرمز إلى ملف .reg. انقر نقرًا مزدوجًا وتأكيدًا. أعد تشغيل Excel.

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\options]
"LegacyAnchorResize"=dword:00000001

[HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\Draw]
"UpdateDeviceInfoForEmf"=dword:00000001

حاول تغيير إعداد التكبير إلى 100 ٪ باستخدام شريط التمرير الأيمن السفلي. تم إصلاحه لي على كلا الشاشات بأحجام مختلفة.

لقد وجدت إصلاحًا يعمل ، ويحل مشكلة مستخدم واحد. إذا كنت لا تريد قراءة صراخ الصغير ، فيمكنك الانتقال مباشرة إلى الحل.

تبجح:

لقد كنت أعاني من هذه المشكلة الغبية منذ الديناصورات. في غضون ذلك ، كان لدى Microsoft الكثير من الموارد لإصدار عدد لا يحصى من التحديثات الرئيسية لمجموعة Office ، ومع ذلك فإن هذه المشكلة لا يتم معالجتها. إنه أمر بالغضب تمامًا. ليس لدي أي سبب على الإطلاق للترقية عندما لا تعمل الأشياء الأساسية مثل هذه. من المؤكد أن شخصًا ما في MS يستخدم عناصر تحكم ActiveX في Excel مباشرة على شاشة عالية الدقة ، لا؟

لم أواجه هذه المشكلة على جهاز كمبيوتر سطح المكتب الخاص بي ، ولا توجد فكرة عن السبب ، ولكن على Surface Pro 4 ، فإن عناصر التحكم ActiveX الخاصة بي تنطلق إلى الموز كلما قمت بالنقر فوقها.

اليوم قررت الوصول إلى أسفل هذا. لقد بحثت عن عالي ومنخفض ، جربت كل حل مقترح في مختلف المنتديات (لا يعمل أي منها بالمناسبة). لا يهم إذا تم تجميع عناصر التحكم أم لا ، مقفلة أم لا ، مثبت في الإصلاح الساخن أم لا.

بالأمس ، واجهت مشكلة أخرى في الأشياء التي سوء تصرفها في تطبيق آخر يسمى Traktor (برنامج DJ) ، حيث تقفز عناصر التحكم عند ضبط تحجيم العرض على قيمة لم تكن مضاعفة دقيقة قدرها 100 ٪. وجد المستخدم أن الحل كان لتحرير وضع التوافق لهذا التطبيق. لذلك فعلت الشيء نفسه من أجل Excel ، وقد نجحت! الآن تظل أدوات التحكم الخاصة بي في وضعها ، بغض النظر عن دقة العرض والتوسيع.

المحلول:

(تأكد من عدم تشغيل Excel)

  1. حدد موقع excel.exe (على نظامي ، يمكن العثور على هذا في C: Program Files Microsoft Office Office16 excel.exe)
  2. إعادة تسمية "excel.exe" إلى "_excel.exe" (قم بتغييره بشكل أساسي إلى شيء آخر)
  3. انقر بزر الماوس الأيمن فوق ملف excel.exe ، ثم انتقل إلى الخصائص> علامة التبويب compatiblity> إعدادات الإعدادات
  4. قم بتجاوز سلوك القياس العالي DPI = ممكّن ، ويتم تنفيذ القياس بواسطة = التطبيق
  5. انقر فوق موافق
  6. إعادة تسمية إلى "_excel.exe" العودة إلى "excel.exe"

الآن ستعمل Excel على قرارها الأصلي ولن تسير عناصر التحكم ActiveX. الجانب السلبي الوحيد هو أن Excel لن يستجيب لتوسيع الشاشة ، لذلك قد تبدو الأمور أصغر قليلاً مما يود المرء. على Surface Pro 4 أكثر من مقبول

ملاحظات:

1) الخطوتين 2 و 6 مطلوبة مع Excel 2016 ، لأن مربع الحوار Properties لـ excel.exe لا يوفر علامة تبويب التوافق. بعد إعادة تسمية ، تصبح علامة التبويب متاحة.

2) هذا الحل يعمل فقط على أساس مستخدم واحد. أي إذا قمت بإرسال ملف Excel الذي يحتوي على عناصر تحكم ActiveX إلى زملائك ، فلن يتم عرض عناصر التحكم ActiveX بشكل صحيح على نظامهم ما لم يغيروا إعدادات وضع التوافق.

3) بعد تطبيق هذا الاختراق ، يبدو أن ملفات Excel التالفة سابقًا تقوم بإصلاح نفسها عند فتحها ، مع استعادة جميع عناصر التحكم الأبعاد المقصودة الأصلية.

يرجى الاختبار والتعليق ، وآمل أن يساعد هذا شخص ما ، في صحتك!

لدي نفس المشكلة في بعض الأحيان. في حالتي ، يمكنني تكرارها بنسبة 100 ٪ على ملف واحد ولكن كان غير متسق على ملف متطابق تقريبًا. لقد وجدت أيضًا أن خطأ الحجم لم يكن دائمًا - يمكنني حفظ الملف وإعادة فتحه لاستعادة مظهر الزر. يمكنني أيضًا إنشاء نافذة جديدة ثم تجاهل النافذة التالفة. يمكنني استخدام تكوين شاشة واحدة.

بالنسبة لي ، يغير الزر عندما وصلت إلى الورقة HPageBreaks مجموعة. تمكنت من تجنب المشكلة عن طريق تغيير عرض النافذة مؤقتًا على النحو التالي:

ActiveWindow.View = xlPageBreakPreview
  ' do pagination stuff using HPageBreaks
ActiveWindow.View = xlNormalView
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top