2013-02-12 197 views
0

我對除了非常基本的Excel功能之外的任何東西都很陌生。我正在嘗試構建一個簡單的電子表格來幫助保持體育賽事的統計數據。我想要有可以點擊的按鈕,然後在第二個工作表中添加一個(數值)到相應的單元格。我想通了,這個代碼將做我想做的第一頁上的一個按鈕,並在第二片上單細胞:通過按鈕點擊在第二張表格中添加一個單元格

Sub Player_Pass() 
Sheets("Sheets").Range("C4").Value = Sheets("Stats").Range("C4").Value + 1 
End Sub 

但我有大約100按鈕,似乎創造了一個獨立的模塊每個具有不同名稱和不同參數的按鈕都不是最優雅的解決方案。任何建議,將不勝感激。

+0

這可能是你想要什麼,但不管有多少次你按下那個按鈕,'表(「表」),範圍(「C4」 ).Value'總是隻會比'Sheets(「Stats」)。Range(「C4」),Value + 1'多一個,除非你在其他地方增加了'Stats'範圍。 – 2013-02-12 02:48:03

+0

另外,我總是建議不要使用「每行按鈕」方法。我覺得很難維持。您也可以使用[WorkSheet_DoubleClick](http://dmcritchie.mvps.org/excel/event.htm#ws_bdc)事件來實現這樣簡單的事情。但這只是我的偏好。 – 2013-02-12 02:53:42

回答

0

您可以將所有的按鈕使用共通的宏,然後用Application.Caller來決定採取何種行動

Sub ButtonClicked() 
    Dim ac 

    ac = Application.Caller 
    Debug.Print ac, ActiveSheet.Shapes(ac).TopLeftCell.Address() 
    'do some action according to which button was clicked... 

End Sub 
+0

或者使用超鏈接(它們只是指向它們所在的單元格)並捕獲表單 - FollowHyperlink事件。 – 2013-02-12 03:23:00

0

試試這個

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    On Error GoTo exitSub 
    With Target 
    If .Column = 1 Then 
    If .Row < 4 Then Exit Sub 
    Sheets("Stats").Range("C" & .Row).Value = Sheets("Stats").Range("C" & .Row).Value + 1 
    .Offset(0, 3).value = Sheets("Stats").Range("C" & .Row).Value 
    .Offset(0, 1).Select 
    End If 
    End With 
exitSub: 
End Sub 

「表」將這個工作表

這將使第一列單元格大於第三行成爲一個按鈕,增加stat

只是修改列和行號來定位虛擬按鈕

相關問題