为每个ActiveCell单击位置用户表单不同

我有一个MonthView和DTPicker的用户窗体,将填充特定的单元格时单击。 我将表单定位在第一个单元格的正下方,但希望它填充在我告诉它激活的每个活动单元格的正下方。 我目前激活的代码来定位用户的forms是:

Private Sub UserForm_Activate() With frmCalendar .Top = Application.Top + 340 .Left = Application.Left + 330 End With End Sub 

和我的工作表select更改代码,这将启动用户窗体的某些单元格点击是:

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Application.Intersect(Target, Range("H10,H15")) Is Nothing Then frmCalendar.Show End If End Sub 

我知道那里有插件帮助做到这一点,但我想弄清楚如何在不使用加载项的情况下将用户表单定位在上述单元格(H10,H14,H15)的正下方。 我是否需要将代码添加到工作表子或激活子? 那是什么代码?

谢谢。

编辑:

我刚刚更改了激活子代码

 Private Sub UserForm_Activate() With frmCalendar .Top = ActiveCell.offset(31).Top .Left = ActiveCell.offset(1).Left End With 

结束小组

这会稍稍移动到单元格的右下方,但是当我在另一个单元格上尝试时,实际上会向下移动,但保持与右侧相同的距离。 这仍然是凌乱的。 没有办法使用这些方法将此表单直接放置在ActiveCell下面?

您正在使用正确的事件macros。 我在工作表中放置了一个TextBox和这个macros

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim s As Shape Set s = ActiveSheet.Shapes(1) s.Top = ActiveCell.Offset(1, 1).Top s.Left = ActiveCell.Offset(1, 1).Left End Sub 

我可以让文本框移动到右侧,在活动单元的正下方。

我find了http://www.vbaexpress.com/forum/archive/index.php/t-22038.html并开发了这个我用过的:

 Sub showUform(iRow&, iCol&) Dim x11!, y11! ActiveSheet.Cells(iRow, iCol).Select x11 = ActiveWindow.PointsToScreenPixelsX(ActiveSheet.Cells(1, 1)) y11 = ActiveWindow.PointsToScreenPixelsY(ActiveSheet.Cells(1, 1)) UserForm1.Left = x11 + ActiveSheet.Cells(iRow, iCol).Left UserForm1.Top = y11 + ActiveSheet.Cells(iRow, iCol).Top UserForm1.Show End Sub 
 Sub FormToActCell(UF As Object, Optional RaD$ = "ACAD", Optional Topw% = 102, _ Optional TopH% = -120) ' form to Active cell or RaD as range address ,offsets topW topH Dim Px&, Py&, Zoomp! If RaD = "ACAD" Then RaD = ActiveCell.Address Set CellToRange = Range(RaD) With CellToRange ' get point about object to Px = (.Left + .Width * Topw / 100) Py = (.Top + .Height * TopH / 100) End With Zoomp = ActiveWindow.Zoom / 100 With UF ' assuming screen as normal pts to pix of 3:4 .Left = Px * Zoomp + ActiveWindow.PointsToScreenPixelsX(0) * 0.75 .Top = Py * Zoomp + ActiveWindow.PointsToScreenPixelsY(0) * 0.75 End With End Sub 

请参阅我提供给这个问题的答案,因为我相信这个问题是一样的。

如何正确alignment活动单元格旁边的UserForm