如何停止按钮的大小调整?每次点击按钮时,按钮的大小或字体大小都会改变。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