2013-10-24 41 views
0

這是我的代碼。這是一個函數,當我點擊一個單獨的未鎖定的單元格時,它會將值增加1。我有一個問題讓它始終運行。有時會運行,有時我需要打開代碼並在最後一個END SUB之後按回車鍵。我想要的是一個刷新此代碼的按鈕,以便VBA可以工作。我在工作表中運行一個私人小組。我可以點擊什麼來啓用/禁用它嗎?即我可以編程一個按鈕嗎?

Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer 

Private Const MOUSEEVENTF_LEFTDOWN = &H2 
Private Const MOUSEEVENTF_LEFTUP = &H4 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    Dim Key As Integer 

    If Target.Count > 1 Then Exit Sub 

    Key = GetKeyState(MOUSEEVENTF_LEFTDOWN) 

    If Key And 1 Then 
     If IsNumeric(Target.Value) Then 
      Target.Value = Target.Value + 1 
      Application.EnableEvents = False 
      Target.Resize(1, 2).Select 
      Application.EnableEvents = True 
     End If 
     Cancel = True 
    End If 
End Sub 
+0

爲什麼使用鼠標事件?這是爲了確保它不會在箭頭鍵中移動嗎? – enderland

+0

它確保我失敗的可能性較小,但我更改爲下面的腳本,這似乎工作得更好。謝謝你的智慧恩德蘭。 – Dwevon

回答

2

您認爲這個簡化的代碼適合我嗎?

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
    Cancel = True 
End Sub 


Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

    If Target.Count > 1 Then Exit Sub 

    If IsNumeric(Target.Value) Then 
    Application.EnableEvents = False 
    Target.Value = Target.Value + 1 
    Target.Resize(1, 2).Select 
    Application.EnableEvents = True 
    End If 
End Sub 
+0

我改變了我的文件,這似乎很好地工作。謝謝!現在我遇到了另一個問題,其中有幾個表格,總和不是自動求和(這很奇怪)。 – Dwevon

相關問題