用户在 Excel 中向右滚动时移动形状(VBA)

Roh*_*uja 5 excel vba

我有一个 Excel 工作簿,在 Sheet1 上有两个形状,如下所示 在此处输入图片说明

我的要求是当用户导航到工作表的右侧,即朝向 headers24、header25 等时,我希望工作表上的两个形状与用户一起移向右侧。

有人可以为此提出任何想法。

谢谢

Ros*_*tta 5

试试这个..是的,它很容易..

将此代码放在存在形状的工作表模块中。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    With ActiveSheet.Shapes(1)

        .Left = ActiveWindow.VisibleRange(2, 2).Left
        .Top = ActiveWindow.VisibleRange(2, 2).Top

    End With

End Sub
Run Code Online (Sandbox Code Playgroud)

坐标 (2, 2) 是您希望随着键盘滚动时形状固定的位置。

但是,在巨大的工作表上没有滚动条的情况下工作会很烦人。所以或者我认为你可以使用刷新时间,将此代码放在一个模块中

Private eTime
Sub ScreenRefresh()
    With ThisWorkbook.Worksheets("Sheet1").Shapes(1)
        .Left = ThisWorkbook.Windows(1).VisibleRange(2, 2).Left
        .Top = ThisWorkbook.Windows(1).VisibleRange(2, 2).Top
    End With
End Sub

Sub StartTimedRefresh()
    Call ScreenRefresh
    eTime = Now + TimeValue("00:00:01")
    Application.OnTime eTime, "StartTimedRefresh"
End Sub

Sub StopTimer()
    Application.OnTime eTime, "StartTimedRefresh", , False
End Sub
Run Code Online (Sandbox Code Playgroud)

以及 Sheet1 中的以下代码(形状所在的位置)

Private Sub Worksheet_Activate()
    Call StartTimedRefresh
End Sub

Private Sub Worksheet_Deactivate()
    Call StopTimer
End Sub
Run Code Online (Sandbox Code Playgroud)