偶尔,我会遇到一个电子表格,其中包含一些神奇的按钮或下拉框,随着时间的推移它们变得越来越大或越来越小。
代码中没有任何指示。
还有其他人经历过这种“乐趣”吗?
偶尔,我会遇到一个电子表格,其中包含一些神奇的按钮或下拉框,随着时间的推移它们变得越来越大或越来越小。
代码中没有任何指示。
还有其他人经历过这种“乐趣”吗?
我也遇到了ActiveX列表框的问题,后来在其他地方找到了以下解决方法,目前看起来它似乎有效,而且这似乎是将电子表格交给他人时最简单的解决方案:
“虽然ListBox有一个IntegralHeight属性,其FALSE设置的副作用将使该控件不会走样,而命令按钮具有诸如move/size with cells等属性,但其他控件则没有那么优雅。”
尽管这种行为显然有许多原因,但几个答案指出了与缩放和屏幕分辨率有关的问题。一种解决方法是使用以下函数将控件调整大小并锚定到特定单元格:
Sub ResizeCombo(ByRef cbo As Shape, ByVal rw As Long, ByVal cl As Long, ByVal wid As Long)
cbo.Height = Intake.Cells(rw, cl).Height - 1
cbo.Top = Intake.Cells(rw, cl).Top + 1
cbo.Left = Intake.Cells(rw, cl).Left + 1
cbo.Width = wid
End Sub
Sub ResizeCheckbox(ByRef cbo As Shape, ByVal rw As Long, ByVal cl As Long)
cbo.Height = Intake.Cells(rw, cl).Height - 1
cbo.Top = Intake.Cells(rw, cl).Top + 1
cbo.Left = Intake.Cells(rw, cl).Left + 6
cbo.Width = Intake.Cells(rw, cl).MergeArea.Width - 7
End Sub
Sub ResizeCombos()
ResizeCombo Intake.Shapes("School"), 11, 1, 144
ResizeCheckbox Intake.Shapes("cbReading"), 70, 1
''ResizeCombo also works for option buttons
ResizeCombo Intake.Shapes("obGenderMale"), 20, 8, 45
ResizeCombo Intake.Shapes("obGenderFemale"), 20, 9,50
然而,最近这个解决方法已经失效。我一直在努力解决这个问题,直到发现工作表的缩放级别已经调整为105%!将其重新设置为100%可以解决问题。但是如果用户需要更高的缩放级别呢?我发现可以在调整大小后更改缩放比例,这样事情就会停留在它们应该停留的地方。我的调用函数现在看起来像这样:
Sub refresh()
OldZoom = ActiveWindow.Zoom
ActiveWindow.Zoom = 100
Call ResizeCombos
ActiveWindow.Zoom = OldZoom
End Sub
目前为止它正在工作!