如何停止按鈕的大小調整?每次點擊按鈕時,按鈕的大小或字體大小都會改變。VBA Excel按鈕在點擊後調整大小(命令按鈕)
注意:我無法鎖定我的工作表,因爲我的宏將寫入工作表。
Autosize已關閉。我在Windows 7(64位)上運行Excel 2007。
如何停止按鈕的大小調整?每次點擊按鈕時,按鈕的大小或字體大小都會改變。VBA Excel按鈕在點擊後調整大小(命令按鈕)
注意:我無法鎖定我的工作表,因爲我的宏將寫入工作表。
Autosize已關閉。我在Windows 7(64位)上運行Excel 2007。
使用形式按鈕,而不是一個ActiveX一個,ActiveX控件隨機行爲不端自己對片
他使用的是ActiveX按鈕嗎?我以前曾經看到過這個問題(最終將所有內容都移到了新表中,我相信),而無需使用ActiveX按鈕。 – Gaffi 2012-03-06 19:58:14
我用於列表框以下。按鈕原理相同;酌情適應。
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
你必須在按鍵宏選擇命令?
不久之後,我重命名工作表中的某些單元格,其中包括切換按鈕在其切換功能之後選擇的單元格,縮小了字體大小。我通過確保範圍(「...」)來解決這個問題。選擇包括新的單元名稱,而不是座標。
在Excel打開後屏幕分辨率/設置發生變化時發生。
例如:
我發現的唯一解決方法是關閉Excel並用新的屏幕設置重新打開它。必須關閉所有Excel實例,包括其他進程執行的不帶接口的任何不可見實例必須被終止。
就我而言,雖然它至少部分與使用不同分辨率的屏幕有關,但此問題不需要在Excel打開後更改分辨率。在Windows 10上的Excel 2007中,當我開始使用筆記本電腦使用外部顯示器時,此問題確實開始,但打開Excel後,我從不切換顯示器或更改分辨率。插上外部監視器(並且Windows設置爲「僅限外部屏幕」,因此只使用外部監視器),打開PC,打開Excel,允許宏,單擊任何按鈕,縮小尺寸和字體。 – SantiBailors 2017-07-16 10:49:08
老問題,但對於我們這些堅持使用Excel 2007的用戶來說似乎仍然是個問題。ActiveX ListBox對象有相同的問題,並且在每次重新計算時都會擴大其大小。 LinkCells屬性正在爲其值設置一個動態(偏移量)範圍。重組,以便它正在尋找一個正常的範圍解決了我的問題。
我添加了一些代碼到onClick
從而末尾:
CommandButton1.Width = 150
CommandButton1.Height = 33
CommandButton1.Font.Size = 11
似乎工作。
我的問題稍有不同。通過在我的主筆記本電腦顯示器上打開工作簿,然後將其移動到我的大顯示器上。同樣的根本原因,我會假設。
我有使用Excel 2013的這個問題。一切工作正常很長時間,突然間,當我點擊按鈕(ActiveX)時,它變得更大,同時字體變小。
不保存文件,我重新啓動了我的電腦,並再次打開相同的Excel文件,一切都很好。
礦印刷後的調整和改變變焦重劃屏幕,並固定它
ActiveWindow.Zoom = 100
ActiveWindow.Zoom = 75
看這個問題在Excel 2007年,2010年和2013
此代碼防止問題的體現。每次激活一個活動的X對象時都需要運行代碼。
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
看起來你忘了在你的例子中格式化所有的代碼。從Sub Shared_ObjectReset()開始,以EndSub結尾。 – nicorellius 2016-07-27 16:47:36
(Excel 2003中)
在我看來,有兩個不同的問題: - 調整大小就可以了,當點擊一個按鈕的文字(儘管並非總是如此,不知道爲什麼),和 - 在不同分辨率的顯示器上打開工作簿時(即使返回初始顯示時仍然存在),更改所有按鈕的大小。
至於個人調整大小的問題:我發現修改按鈕的一個維度以「振興」它就足夠了。 如:
myButton.Height = myButton.Height + 1
myButton.Height = myButton.Height - 1
你可以把它放在每個按鈕的點擊子(「myButton_Click」),或者實現它 爲「點擊」事件自定義CLASSE。
爲什麼你不能鎖定表單?您應該可以使用VBA執行此任務。 Sheet.Protect/Sheet.Unprotect(有一個可選的密碼變量,你可以通過) – Gaffi 2012-03-06 19:56:45
問題沒有通過鎖定解決,因爲原因似乎是Windows不擅長。請參閱以下類似問題的答案:http://stackoverflow.com/q/1573349/1047635 – 2012-07-03 09:32:44