单击后,VBA Excel Button的大小会调整(命令按钮) 您所在的位置:网站首页 excel字体老是自动变小 单击后,VBA Excel Button的大小会调整(命令按钮)

单击后,VBA Excel Button的大小会调整(命令按钮)

2024-05-21 15:59| 来源: 网络整理| 查看: 265

如何停止调整按钮大小? 每次单击按钮时,按钮的大小或字体大小都会改变。

注意:我无法锁定工作表,因为我的宏将写入工作表。

自动调整大小已关闭。 我在Windows 7(64位)上运行Excel 2007。

相关讨论 你为什么不能锁住床单? 您应该能够使用VBA执行此任务。 Sheet.Protect / Sheet.Unprotect(也可以传递一个可选的密码变量) 通过锁定无法解决问题,因为原因似乎不是Windows。 在这里查看类似问题的答案:stackoverflow.com/q/1573349/1047635

我将以下内容用于ListBoxes。按钮的原理相同;适当调整。

1234567891011Private 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

这使用以下类型和过程:

1234567891011121314Type 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

我在onClick的末尾添加了一些代码:

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

似乎可以工作。

我发现问题的方式略有不同。通过在笔记本电脑的主显示器上打开工作簿,然后将其移动到大显示器上。我想同样的根本原因。

相关讨论 这是一个好主意。我的问题是,随着点击问题的累积,我必须设置Font.Size = 200才能完全看到文本。微软给我留下了深刻的印象,因为这个问题似乎已经存在多年了。 如果我使用ActiveX控件,则您的代码有效。相反,如果我使用形状(例如,圆形,正方形)并为其分配宏,则您的代码将不起作用。我确实用形状名称(例如,rectangular2)替换了CommandButton1,但是它不起作用。你能帮我吗?谢谢。

(Excel 2003)

在我看来,有两个不同的问题: -单击时调整一个按钮的文本大小(尽管并非总是如此,不知道为什么),并且 -在分辨率不同的显示器上打开工作簿时,更改"全部"按钮的大小(即使返回初始显示器,该按钮仍然存在)。

至于单个调整大小的问题:我发现修改按钮的一个维度以"使之恢复活力"就足够了。 如 :

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

您可以将其放在每个按钮的单击子(" myButton_Click")中,或将其实现 " onClick"事件的自定义类。

在Excel 2007、2010和2013中看到此问题

此代码可防止问题出现。每次激活活动的X对象时,都需要运行代码。

123456789101112131415161718192021222324252627282930313233343536373839404142Sub 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结尾。

经过一番沮丧的摆弄之后,以下代码帮助我解决了这个Excel / VBA错误。 需要注意的两个关键事项:

尽管其他人建议先更改大小,然后立即将其改回,但请注意,此代码避免在单次触发状态更改时多次更改。如果在一个事件状态更改期间该值两次更改(特别是如果第二个值与初始值相同),则可能永远不会将替代宽度和高度属性应用于控件,这不会将控件的宽度和高度重置为必须防止宽度和高度值减小。 我对宽度和高度使用了硬编码的值。这不是理想的方法,但是我发现这是防止控件在多次单击后缩小的唯一方法。 1234567891011121314151617Private 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属性在两组相似的值之间交替,这将产生类似于我使用的切换状态更改的效果在这种情况下。

我在使用ActiveX按钮和旋转Excel调整大小和移动时遇到了相同的问题。这是在多个不同PC的笔记本电脑和屏幕上使用的共享电子表格。由于它是共享的,因此我无法使用宏在代码中自动重新定位和调整大小。

最后,寻找解决方案并尝试所有可能的按钮设置。我发现对按钮进行分组可以立即解决问题。控件,按钮和微调器都保持在原位。我已经测试了一个星期,没有问题。只需选择控件,右键单击并分组-就像魔术一样。

在Excel 2016中发现了相同的问题-可以通过更改控制按钮的高度,将其改回然后在工作表上选择一个单元格来进行纠正。只是调整大小并不能始终如一地工作。下面的命令按钮示例(cmdBALSCHED)

12345Public Sub cmdBALSCHED_Click() Sheet3.cmdBALSCHED.Height = 21 Sheet3.cmdBALSCHED.Height = 20 Sheet3.Range("D4").Select

这会将高度重置为20,将按钮字体重置为找到的高度。

打印并更改缩放比例后,矿井的尺寸重新绘制并修复了屏幕

12ActiveWindow.Zoom = 100 ActiveWindow.Zoom = 75

我在使用Excel 2013时遇到了这个问题。所有事情都能长时间正常工作,突然间,当我单击按钮(ActiveX)时,它变大了,而字体变小了。

在不保存文件的情况下,我重新启动计算机,然后再次打开相同的Excel文件,一切正常。

这是旧问题,但对于那些坚持使用Excel 2007的人来说似乎仍然是一个问题。ActiveXListbox Object上存在同样的问题,并且每次重新计算时都会扩大其大小。 LinkCells属性正在寻找其值的动态(偏移)范围。进行重组,使其看起来处于正常范围,从而解决了我的问题。

打开Excel后屏幕分辨率/设置发生更改时,会发生这种情况。

例如:

打开一个带有按钮的工作簿 从具有不同屏幕尺寸的计算机使用远程桌面登录 单击按钮=>按钮大小将改变

我发现的唯一解决方案是关闭Excel并使用新的屏幕设置将其重新打开。 Excel的所有实例都必须关闭,包括其他没有接口的进程执行的不可见实例必须被杀死。

相关讨论 就我而言,尽管至少部分与使用具有不同分辨率的屏幕有关,但是此问题不需要在打开Excel后更改分辨率。在Windows 10上的Excel 2007中,当我开始在笔记本电脑上使用外接显示器时,确实出现了此问题,但是在打开Excel之后,我从不切换显示器或更改分辨率。插入外部监视器(并且Windows在"仅外部屏幕"上设置,因此仅使用外部监视器),打开PC,打开Excel,允许宏,单击任何按钮,它的大小和字体都会缩小。

在按钮宏中是否有选择命令?

在我重命名工作表中的某些单元格后不久,其中包括切换按钮在其切换功能后选择的单元格后,字体大小缩小了。我通过确保Range(" ...")。Select来解决此问题。选择包括新的单元格名称,而不是坐标。

使用"表单"按钮而不是ActiveX按钮,ActiveX控件会在工作表上随机出现异常

相关讨论 他在使用ActiveX按钮吗?我以前从未见过此问题(我相信最终将所有内容移至新的工作表),而没有使用ActiveX按钮。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有