2012-03-06 15 views
11

मैं आकार बदलने से बटन को कैसे रोक सकता हूं? प्रत्येक बार जब मैं बटन पर क्लिक करता हूं, तो बटन का आकार या फ़ॉन्ट आकार बदल जाता है।वीबीए एक्सेल बटन उस पर क्लिक करने के बाद आकार बदलता है (कमांड बटन)

नोट: मैं अपनी चादर को लॉक नहीं कर सकता क्योंकि मेरा मैक्रो शीट में लिख देगा।

ऑटोसाइज बंद है। मैं विंडोज 7 (64 बिट) पर एक्सेल 2007 चलाता हूं।

+0

आप शीट को क्यों लॉक नहीं कर सकते? आप इस कार्य को करने के लिए वीबीए का उपयोग करने में सक्षम होना चाहिए। शीट। संरक्षित/शीट। असुरक्षित (एक वैकल्पिक पासवर्ड वैरिएबल भी है जिसे आप पास भी कर सकते हैं) – Gaffi

+1

समस्याएं लॉक करके हल नहीं होती हैं क्योंकि ऐसा लगता है कि विंडोज एक्सेल नहीं है। यहां इसी तरह के प्रश्न के उत्तर देखें: http://stackoverflow.com/q/1573349/1047635 –

उत्तर

0

एक ActiveX एक के बजाय एक फार्म बटन का प्रयोग करें, ActiveX बेतरतीब ढंग से चादरें

+0

क्या वह ActiveX बटन का उपयोग कर रहा है? मैंने ActiveX बटन का उपयोग किए बिना एक बार पहले इस समस्या को देखा है (सबकुछ एक नई शीट पर ले जा रहा है, मुझे विश्वास है)। – Gaffi

6

मैं listboxes के लिए निम्नलिखित का उपयोग पर खुद को गलत व्यवहार नियंत्रित करती हैं। बटन के लिए समान सिद्धांत; उपयुक्त के रूप में अनुकूलित करें।

Private Sub myButton_Click() 
    Dim lb As MSForms.ListBox 
    Set lb = Sheet1.myListBox 

    Dim oldSize As ListBoxSizeType 
    oldSize = GetListBoxSize(lb) 

    ' Do stuff that makes listbox misbehave and change size. 
    ' Now restore the original size: 
    SetListBoxSize lb, oldSize 
End Sub 

यह निम्न प्रकार के और प्रक्रियाओं का उपयोग करता है:

Type ListBoxSizeType 
    height As Single 
    width As Single 
End Type 

Function GetListBoxSize(lb As MSForms.ListBox) As ListBoxSizeType 
    GetListBoxSize.height = lb.height 
    GetListBoxSize.width = lb.width 
End Function 

Sub SetListBoxSize(lb As MSForms.ListBox, lbs As ListBoxSizeType) 
    lb.height = lbs.height 
    lb.width = lbs.width 
End Sub 
0

आप बटन मैक्रो का चयन आदेश है?

वर्कशीट में कुछ कक्षों का नाम बदलने के कुछ ही समय बाद टॉगल बटन टॉगल फ़ंक्शन के बाद चयन करता है, फ़ॉन्ट का आकार घट जाता है। मैंने यह सुनिश्चित करके यह तय किया है कि रेंज ("...")। नया सेल नाम शामिल करें, न कि निर्देशांक।

0

ऐसा तब होता है जब एक्सेल खोलने के बाद स्क्रीन रिज़ॉल्यूशन/सेटिंग्स बदलती हैं।

उदाहरण के लिए:

  1. ओपन किसी कार्यपुस्तिका अलग स्क्रीन आकार के साथ एक कंप्यूटर से दूरस्थ डेस्कटॉप के साथ में पर यह
  2. प्रवेश करें एक बटन है कि
  3. बटन पर क्लिक करें => बटन आकार होगा

मुझे मिला एकमात्र समाधान एक्सेल को बंद करना और नई स्क्रीन सेटिंग्स के साथ इसे फिर से खोलना है। एक्सेल के सभी उदाहरण बंद किए जाने चाहिए, बिना इंटरफ़ेस के अन्य प्रक्रियाओं द्वारा निष्पादित किसी भी अदृश्य उदाहरण को मारना चाहिए।

+0

मेरे मामले में, हालांकि यह कम से कम विभिन्न संकल्पों के साथ स्क्रीन का उपयोग करने से संबंधित है, इस मुद्दे को एक्सेल को खोलने के बाद संकल्प को बदलने की आवश्यकता नहीं है। विंडोज 10 पर एक्सेल 2007, यह समस्या तब शुरू हुई जब मैंने अपने लैपटॉप के साथ बाहरी मॉनीटर का उपयोग करना शुरू किया, लेकिन एक्सेल खोलने के बाद भी मैं मॉनीटर स्विच नहीं करता या संकल्प बदलता हूं। बाहरी मॉनीटर प्लग (और विंडोज़ "केवल बाहरी स्क्रीन" पर सेट है, इसलिए केवल बाहरी मॉनिटर इस्तेमाल किया जाता है), पीसी चालू करें, एक्सेल खोलें, मैक्रोज़ को अनुमति दें, किसी भी बटन पर क्लिक करें, यह आकार और फ़ॉन्ट दोनों में छोटा हो जाता है। – SantiBailors

0

पुरानी समस्या, लेकिन अभी भी हम में से उन लोगों के लिए एक मुद्दा है जो Excel 2007 पर फंस गए हैं। ActiveX Listbox ऑब्जेक्ट पर एक ही समस्या थी और प्रत्येक आकार की गणना पर इसका आकार बढ़ाएगा। लिंककल्स संपत्ति अपने मूल्यों के लिए एक गतिशील (ऑफसेट) रेंज की तलाश में थी। पुनर्गठन ताकि वह मेरी समस्या को तय करने वाली सामान्य सीमा की तलाश में था।

3

मैं onClick इस प्रकार के अंत करने के लिए कुछ कोड कहा:

CommandButton1.Width = 150 
CommandButton1.Height = 33 
CommandButton1.Font.Size = 11 

काम करने के लिए लगता है।

मुझे इस मुद्दे को थोड़ा अलग तरीके मिला। मेरे प्राथमिक लैपटॉप डिस्प्ले पर कार्यपुस्तिका खोलकर, फिर इसे मेरे बड़े मॉनीटर पर ले जाया जा रहा है। मुझे लगता है कि वही मूल कारण है।

+0

यह एक अच्छा विचार है। मेरी समस्या यह है कि, जैसा कि क्लिकिंग समस्या जमा होती है, मुझे टेक्स्ट देखने के लिए 'Font.Size = 200' सेट करना होगा। मैं माइक्रोसॉफ्ट द्वारा * नहीं * प्रभावित हूं, क्योंकि यह समस्या कई सालों से विद्यमान रही है। – Holene

+0

यदि मैं आपके कोड काम करता है तो ActiveX नियंत्रण का उपयोग करता हूं। इसके विपरीत, यदि मैं एक आकृति का उपयोग करता हूं (उदाहरण के लिए, एक सर्कल, एक वर्ग) और इसमें एक मैक्रो असाइन करें, तो आपका कोड काम नहीं करता है। मैंने आकृति नाम के साथ कमांडबटन 1 को प्रतिस्थापित किया (उदाहरण के लिए, आयताकार 2) लेकिन यह काम नहीं करता है। क्या तुम मेरी मदद कर सकते हो? धन्यवाद। – Marco

0

मुझे Excel 2013 का उपयोग करके यह समस्या थी। लंबे समय तक काम करने के लिए सबकुछ ठीक और अचानक, जब मैंने बटन (ActiveX) पर क्लिक किया, तो यह बड़ा हो गया और फ़ॉन्ट एक ही समय में छोटा हो गया।

फ़ाइल को सहेजने के बिना, मैंने अपने कंप्यूटर को पुनरारंभ किया और उसी एक्सेल फ़ाइल को फिर से खोल दिया और सब कुछ ठीक है।

0

मेरा मुद्रण के बाद आकार दिया और जूम बदलते स्क्रीन redrew और यह तय

ActiveWindow.Zoom = 100 
ActiveWindow.Zoom = 75 
0

Excel 2007, में इस समस्या को देखा 2010 और 2013

इस कोड को प्रकट से इस मुद्दे को रोकता है। जब भी एक सक्रिय एक्स ऑब्जेक्ट सक्रिय होता है तो कोड को चलाने की आवश्यकता होती है।

Sub Shared_ObjectReset() 

    Dim MyShapes As OLEObjects 
    Dim ObjectSelected As OLEObject 

    Dim ObjectSelected_Height As Double 
    Dim ObjectSelected_Top As Double 
    Dim ObjectSelected_Left As Double 
    Dim ObjectSelected_Width As Double 
    Dim ObjectSelected_FontSize As Single 

    ActiveWindow.Zoom = 100 

    'OLE Programmatic Identifiers for Commandbuttons = Forms.CommandButton.1 
    Set MyShapes = ActiveSheet.OLEObjects 
    For Each ObjectSelected In MyShapes 
     'Remove this line if fixing active object other than buttons 
     If ObjectSelected.progID = "Forms.CommandButton.1" Then 
      ObjectSelected_Height = ObjectSelected.Height 
      ObjectSelected_Top = ObjectSelected.Top 
      ObjectSelected_Left = ObjectSelected.Left 
      ObjectSelected_Width = ObjectSelected.Width 
      ObjectSelected_FontSize = ObjectSelected.Object.FontSize 

      ObjectSelected.Placement = 3 

      ObjectSelected.Height = ObjectSelected_Height + 1 
      ObjectSelected.Top = ObjectSelected_Top + 1 
      ObjectSelected.Left = ObjectSelected_Left + 1 
      ObjectSelected.Width = ObjectSelected_Width + 1 
      ObjectSelected.Object.FontSize = ObjectSelected_FontSize + 1 

      ObjectSelected.Height = ObjectSelected_Height 
      ObjectSelected.Top = ObjectSelected_Top 
      ObjectSelected.Left = ObjectSelected_Left 
      ObjectSelected.Width = ObjectSelected_Width 
      ObjectSelected.Object.FontSize = ObjectSelected_FontSize 

     End If 
    Next 

End Sub 
+1

ऐसा लगता है कि आप अपने उदाहरण में सभी कोड को प्रारूपित करना भूल गए हैं। 'Sub Shared_ObjectReset()' से शुरू हो रहा है और 'एंडसब' के साथ समाप्त हो रहा है। – nicorellius

0

(Excel 2003)

मुझे ऐसा लगता है वहाँ दो अलग-अलग मुद्दे हैं: - एक बटन जब उस पर क्लिक के पाठ का आकार बदलने (हालांकि हमेशा नहीं, पता नहीं क्यों), और - एक अलग रिज़ॉल्यूशन के साथ डिस्प्ले पर कार्यपुस्तिका खोलते समय सभी बटनों का आकार बदलना (जो प्रारंभिक डिस्प्ले पर वापस आने पर भी subsist)।

व्यक्तिगत आकार बदलने के मुद्दे के रूप में: मैंने पाया कि बटन के एक आयाम को "फिर से जीवंत" करने के लिए यह पर्याप्त है। जैसे:

myButton.Height = myButton.Height + 1 
myButton.Height = myButton.Height - 1 

आप प्रत्येक बटन के क्लिक उप ("myButton_Click") में रख, या यह "onClick" घटना के लिए एक कस्टम क्लास लागू कर सकते हैं।

संबंधित मुद्दे