2017-09-13 865 views
-4

我需要幫助捕獲鼠標左鍵點擊單元格值。因此,當用戶在特定的單元格中單擊鼠標左鍵時,我需要在VBA代碼中捕獲該特定的單元格值(寫入該單元格中的值)。在Excel VBA中單擊鼠標左鍵捕獲單元值

該值將被傳遞給VBA代碼,並且對於不同單元格中的點擊,輸出會有所不同。我希望我能夠解釋目的。

我總共有10個單元格,其中鼠標左鍵單擊值將被捕獲。

+0

我能想到SelectionChange事件,儘管這會如果,例如,選擇B1,然後你點擊B2,但不是B1是和重新選擇B1。 – Cyril

+0

在思考中,您可以讓部分代碼將選擇重置爲A1,然後無論點擊是否可以複製(如果在該範圍內)。 – Cyril

+1

沒有那麼多人願意從頭開始編寫代碼。你應該帶着半滿的杯子來到這裏,而不是空的杯子,這樣我們可以向你解釋爲什麼你的杯子是空的,並建議下一步做什麼。 – Tehscript

回答

1

如果你想解決一個鼠標雙擊,你可以嘗試像

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
    MsgBox Target.Value 
    Cancel = True 
End Sub 
2

此代碼將檢查是否多個單元格一次,然後選擇它檢查如果單元格是空的。如果它是空的,則它退出,否則它存儲的值是單元格N1。您可以更改值存儲在哪個單元格。如果N1具有價值它進入下一個空單元格列N.

Dim oval 
Dim N As Long 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
If Target.Cells.Count < 2 Then 
    If Target = Empty Then 
     Exit Sub 
    End If 
oval = Target.Value 
MsgBox "The value saved is " + oval + "." 
If Range("N1").Value = "" Then 
    N = 1 
Else 
    N = Cells(Rows.Count, "N").End(xlUp).Row + 1 
End If 
Cells(N, "N").Value = oval 
End If 
End Sub 
+0

感謝DaBeau96先生。我的答案在我看來是最接近的一個。 –

+0

感謝DaBeau96先生。憑藉我對VBA的有限知識,你的答案在我看來是最接近的一個。在論壇上提出問題之前,我對Google進行了廣泛的研究,並瞭解VBA中沒有鼠標左鍵單擊事件捕獲,因此任何解決方案都只是一種解決方法。不過,VBA具有雙擊鼠標事件捕獲功能,因此K Davis先生髮布的答案也是正確的。所以我做了功課,並不是像Tehscript先生提到的那樣用空杯子來到這裏。我希望這個論壇能夠幫助像我這樣的業餘用戶。感謝所有提供解決方案 –

+0

的人,我知道沒有鼠標點擊選項,並且最接近它的是SelectionChange,這是我的經驗。我不確定你想存儲的值是什麼,所以我只是把它們放在一個單元格中,這樣你就可以很容易地看到你想存儲的值 – DaBeau96

相關問題