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