使用Excel中的单元格移动按钮

时间:2015-03-31 18:38:22

标签: excel vba excel-vba

我正在尝试创建一个电子表格,其中我需要每行中的一个按钮以在其旁边的单元格中标记时间,然后按时间顺序对行进行排序。我的问题是按钮不移动。例如。单元格B1中的按钮更改单元格A1中的时间,单元格B2中的按钮更改单元格A2中的时间,对于此示例,假设A2的时间小于A1,因此当排序的A1和A2有效地交换数据时。现在B2中的按钮改变单元格A1中的时间。

一直试图解决这个问题几个小时,我们将非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

根据David的评论,您可以尝试此设置。

Dim r As Range

Private Sub CommandButton21_Click()
    r.Offset(0, -1).Value = Time
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error GoTo halt
    Application.EnableEvents = False

    If Target.CountLarge > 1 Then GoTo moveon
    Dim btn As OLEObject: Set btn = Me.OLEObjects("CommandButton21")

    If Not Intersect(Target, Me.Range("B:B")) Is Nothing Then
        Set r = Target
        With btn
            .Visible = True
            .Left = r.Left
            .Top = r.Top
            .Width = r.Width
            .Height = r.Height
        End With
    Else
        btn.Visible = False
    End If

moveon:
    Application.EnableEvents = True
    Exit Sub
halt:
    MsgBox Err.Description
    Resume moveon
End Sub

您需要创建一个名为CommandButton21的ActiveX控件 在B列中选择了某些内容时,此按钮会移动并显示 您可以在 CommandButton21_Click 事件中添加排序例程。