如何停止按钮调整大小?每次单击按钮时,按钮的大小或字体大小都会发生变化。
注意:我无法锁定我的工作表,因为我的宏会写入工作表。
自动调整大小已关闭。我在Windows 7(64位)上运行Excel 2007。
答案 0 :(得分: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
答案 1 :(得分:4)
我在onClick
的末尾添加了一些代码:
CommandButton1.Width = 150
CommandButton1.Height = 33
CommandButton1.Font.Size = 11
似乎工作。
我的问题略有不同。通过在我的主笔记本电脑显示屏上打开工作簿,然后将其移动到我的大显示器。我会假设相同的根本原因。
答案 2 :(得分:1)
在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
答案 3 :(得分:1)
(Excel 2003)
在我看来,有两个不同的问题: - 点击它时调整ONE按钮文本的大小(虽然不总是,不知道为什么),以及 - 在具有不同分辨率的显示器上打开工作簿时更改所有按钮的大小(即使在返回初始显示时也存在)。
至于个别调整大小问题:我发现修改按钮的一个维度以“恢复”它就足够了。 如:
myButton.Height = myButton.Height + 1
myButton.Height = myButton.Height - 1
您可以将它放在每个按钮的点击子(“myButton_Click”)中,或实现它 “onClick”事件的自定义Classe。
答案 4 :(得分:0)
使用表单按钮而不是ActiveX按钮,ActiveX控件随机在表单上行为不端
答案 5 :(得分:0)
按钮宏中有选择命令吗?
在我重命名工作表中的一些单元格后,包括切换按钮在其切换功能之后选择的单元格后,缩短了字体大小。我通过确定Range(“...”)来修复此问题。选择包括新的单元格名称,而不是坐标。
答案 6 :(得分:0)
在Excel打开后,屏幕分辨率/设置发生变化时会发生这种情况。
例如:
我找到的唯一解决方案是关闭Excel并使用新的屏幕设置重新打开它。必须关闭所有Excel实例,包括必须杀死没有接口的其他进程执行的任何不可见实例。
答案 7 :(得分:0)
旧问题,但似乎仍然是我们这些卡在Excel 2007上的问题。在ActiveX Listbox对象上遇到相同的问题,并会在每次重新计算时扩展其大小。 LinkCells属性正在寻找其值的动态(偏移)范围。重组以便它正在寻找正常范围来解决我的问题。
答案 8 :(得分:0)
我使用Excel 2013时遇到了这个问题。一切都工作正常很长时间,突然间,当我点击按钮(ActiveX)时,它变大了,同时字体也变小了。
不保存文件,我重新启动计算机并再次打开相同的Excel文件,一切都很好。
答案 9 :(得分:0)
我打印后调整大小并更改缩放重新绘制屏幕并修复它
ActiveWindow.Zoom = 100
ActiveWindow.Zoom = 75
答案 10 :(得分:0)
在Excel 2016中发现了相同的问题-能够通过更改控制按钮的高度,将其改回并在工作表上选择一个单元格来进行纠正。只是调整大小无法始终如一地工作。下面的命令按钮示例(cmdBALSCHED)
Public Sub cmdBALSCHED_Click()
Sheet3.cmdBALSCHED.Height = 21
Sheet3.cmdBALSCHED.Height = 20
Sheet3.Range("D4").Select
这会将高度重置为20,将按钮字体重置为找到的
。答案 11 :(得分:0)
我在使用ActiveX按钮时遇到了同样的问题,并且在Excel中调整大小和移动时旋转。这是在多个不同PC的笔记本电脑和屏幕上使用的共享电子表格。由于它是共享的,所以我不能使用宏来自动重新定位代码并调整其大小。
最后,在寻找解决方案并尝试了所有可能的按钮设置之后。我发现对按钮进行分组可以立即解决问题。控件,按钮,微调器都保持在原位。我已经测试了一个星期,没有问题。只需选择控件,右键单击并分组-就像魔术一样。
答案 12 :(得分:0)
经过一番沮丧的摆弄之后,以下代码帮助我解决了这个Excel / VBA错误。 需要注意的两个关键事项:
Private Sub ToggleButton1_Click() 'Note: initial height is 133.8 and initial width was 41.4 If ToggleButton1.Value = True Then ' [Code that I want to run when user clicks control and toggle state is true (not related to this issue)] 'When toggle value is true, simply change the width and height values to a specific value other than their initial values. ToggleButton1.Height = 40.4 ToggleButton1.Width = 132.8 Else ' [Code that I want to run when user clicks control and toggle state false (not related to this issue)] 'When toggle value is false adjust to an alternate width and height values. 'These can be the same as the initial values, as long as they are in a separate conditional statement. ToggleButton1.Height = 41.4 ToggleButton1.Width = 133.8 End If End Sub
对于不进行切换的控件,您可以使用迭代器变量或其他方法来确保width和height属性在两组相似的值之间交替,这将产生类似于切换状态变化的效果我在这种情况下使用的。