问题 单击后VBA Excel按钮调整大小(命令按钮)


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

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

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


9394
2018-03-06 09:49


起源

为什么你不能锁定表格?您应该能够使用VBA来执行此任务。 Sheet.Protect / Sheet.Unprotect(还有一个可以传递的可选密码变量) - Gaffi
锁定不能解决问题,原因似乎是Windows不能出类拔萃。在这里查看类似问题的答案: stackoverflow.com/q/1573349/1047635 - matt_black


答案:


我对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

6
2018-03-07 06:22





我添加了一些代码到最后 onClick 从而:

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

似乎工作。

我的问题略有不同。通过在我的主笔记本电脑显示屏上打开工作簿,然后将其移动到我的大显示器。我会假设相同的根本原因。


3
2017-09-07 11:58



这是一个很好的想法。我的问题是,随着点击问题的积累,我必须设置 Font.Size = 200 完全看文字。我是 不 微软给人留下了深刻的印象,因为这个问题似乎已经存在了好几年。 - Holene
如果我使用ActiveX控件,您的代码将起作用。相反,如果我使用形状(例如,圆形,正方形)并为其指定宏,则代码不起作用。我用形状名称替换CommandButton1(例如,rectangle2),但它不起作用。你能帮我吗?谢谢。 - Marco


(Excel 2003)

在我看来,有两个不同的问题: - 点击它时调整ONE按钮文本的大小(虽然并非总是如此,但不知道为什么),以及 - 在具有不同分辨率的显示器上打开工作簿时更改所有按钮的大小(即使在返回初始显示时也存在)。

至于个别调整大小问题:我发现修改按钮的一个维度以“恢复”它就足够了。 如 :

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

您可以将它放在每个按钮的点击子(“myButton_Click”)中,或实现它 “onClick”事件的自定义Classe。


1
2017-07-14 14:50





使用表单按钮而不是ActiveX按钮,ActiveX控件随机在工作表上行为不当


0
2018-03-06 12:13



他使用的是ActiveX按钮吗?我没有使用过ActiveX按钮,之前曾经看到过这个问题(最后将所有东西都移到了新的工作表上)。 - Gaffi


按钮宏中有选择命令吗?

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


0
2018-06-27 00:17





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

例如:

  1. 打开一个上面有按钮的工作簿
  2. 使用远程桌面从具有不同屏幕大小的计算机登录
  3. 单击按钮=>按钮大小将更改

我找到的唯一解决方案是关闭Excel并使用新的屏幕设置重新打开它。必须关闭所有Excel实例,包括其他进程执行的任何不可见实例,不必删除接口。


0
2017-12-10 15:28



就我而言,虽然它至少部分与使用不同分辨率的屏幕相关,但是这个问题不需要改变分辨率 Excel打开后。在Windows 10上的Excel 2007,当我开始在我的笔记本电脑上使用外接显示器时,这个问题就开始了,但是在打开Excel后我从不切换显示器或更改分辨率。外部显示器已插入(Windows设置为“仅外部屏幕”,因此仅使用外部显示器),打开PC,打开Excel,允许宏,单击任何按钮,它会缩小尺寸和字体。 - SantiBailors


旧的问题,但似乎仍然是我们这些卡在Excel 2007上的问题。在ActiveX列表框对象上有相同的问题,并将在每次重新计算时扩大其大小。 LinkCells属性正在寻找其值的动态(偏移)范围。重组,以便它正在寻找正常范围解决了我的问题。


0
2017-08-03 15:25





我使用Excel 2013时遇到了这个问题。一切都工作正常很长时间,突然间,当我点击按钮(ActiveX)时,它变大了,同时字体变小了。

在不保存文件的情况下,我重新启动计算机并再次打开相同的Excel文件,一切都很好。


0
2017-10-02 17:50





我打印后调整大小并更改缩放重新绘制屏幕并修复它

ActiveWindow.Zoom = 100
ActiveWindow.Zoom = 75

0
2017-07-10 02:44