gpt4 book ai didi

excel - VBA 将用户窗体放在所选范围旁边

转载 作者:行者123 更新时间:2023-12-04 18:06:50 25 4
gpt4 key购买 nike

我需要在选定的单元格旁边放置一个用户表单。这是我的代码。 Excel 2013。

在用户表单模块中:

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 首次加载时在标准 View 中工作,前 30 行左右。但是,如果您尝试在第 4000 行甚至第 40 行使用它,它会将用户窗体置于屏幕之外。 Excel 似乎没有考虑屏幕的位置。要明白我的意思,请尝试使用上面的代码在单元格 A1 旁边放置一个用户窗体。然后向下滚动,使 A1 不再出现在屏幕上,然后再次运行代码。它将用户窗体放在完全相同的位置,就好像您仍在原始位置向上滚动一样。

除了 range.Left 等之外,是否有我可以使用的属性来相对于屏幕上范围的位置放置用户窗体?或者我是否需要做一些奇怪的巫术废话,在考虑到地球的旋转力和与太阳的相对距离之后,找出滚动条的位置并找到单元格相对于它的位置?

哦,微软...

最佳答案

滚动时可以调整表单的位置

ActiveWindow.VisibleRange.Top &
ActiveWindow.VisibleRange.Left

使用它在所有情况下都有效

Me.Left = ActiveCell.Left + ActiveCell.Width  - ActiveWindow.VisibleRange.Left
Me.Top = ActiveCell.Top - ActiveWindow.VisibleRange.Top

关于excel - VBA 将用户窗体放在所选范围旁边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24636520/

25 4 0