2015-03-31 87 views
0

我正在尝试创建一个电子表格,其中我需要每行中的按钮来在时间单元旁边的单元格中加上时间,然后按时间顺序对行进行排序。我的问题是按钮不动。例如。单元格B1中的按钮更改单元格A1中的时间,单元格B2中的按钮更改单元格A2中的时间,并且对于此示例可以说,A2的时间比A1的时间更短,因此当对A1和A2进行排序时可以有效地交换数据。现在B2中的按钮更改单元格A1中的时间。使用Excel中的单元格移动按钮

一直试图找出几个小时,任何帮助将不胜感激。

+1

为什么不只有一个*按钮可以完成基于当前选中的任何单元的所有工作? – 2015-03-31 18:40:14

+0

啊,这将工作,我该怎么做? – 2015-03-31 19:32:31

+0

你会怎么做? – 2015-03-31 19:45:43

回答

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事件中添加排序例程。

相关问题