我需要在所选单元格旁边放置一个userform。这是我的代码。 Excel 2013。
在userform模块中:
Private rangePosition As Range 'Property passed to form to set position based on range
'Set userform position to right of range
Property Let PositionToRange(rangeInput As Range)
Set rangePosition = rangeInput
Me.Left = rangePosition.Left + rangePosition.Width + 30
Me.Top = rangePosition.Top + Application.CommandBars("Ribbon").Height + 27
End Property
在标准模块中:
userform.PositionToRange = Selection '(or some specified range)
userform.Show
好的,太好了。所以起初这似乎可以解决问题。但是,当Excel首次加载时,它似乎只能在标准视图中工作,前30行左右。但是,如果您尝试在行4000或甚至40上使用它,它会将userform WAY从屏幕上移开。 Excel似乎没有考虑到屏幕的位置。要查看我的意思,请尝试使用上面的代码将用户窗体放在单元格A1旁边。然后向下滚动,以便A1不再出现在屏幕上并再次运行代码。它将用户表单放在完全相同的位置,就像您仍然在原始位置向上滚动一样。
我是否可以使用除range.Left
之外的其他属性来将userform相对于屏幕上的范围放置?或者我需要做一些奇怪的伏都教废话,当我弄清楚滚动条的位置并找出相对于那个细胞的位置,当然考虑到地球的旋转力和相对距离的距离,当然?
哦,微软......
答案 0 :(得分:0)
使用
滚动窗体时,可以调整窗体的位置ActiveWindow.VisibleRange.Top &
ActiveWindow.VisibleRange.Left
使用它可以在所有情况下使用
Me.Left = ActiveCell.Left + ActiveCell.Width - ActiveWindow.VisibleRange.Left
Me.Top = ActiveCell.Top - ActiveWindow.VisibleRange.Top