我正在嘗試在公式欄中創建一個自定義右鍵單擊菜單(右鍵單擊時出現的單元格,例如鍵入內容)。我設法通過右鍵單擊我想要的按鈕,但是我找不到如何確定光標位於單元格內的位置。獲取遊標在單元格中的位置
例如,如果光標位於單元格中的第5個字符之後,如何確定BeforeRightClick事件發生之前還是之前?我發現的唯一的問題是相反的問題。放置在細胞的特定部分的光標,使用的SendKeys:
'===================================================================================
'- MOVE CURSOR IN THE FORMULA BAR AS REQUIRED
'- Brian Baulsom September 2007
'===================================================================================
Sub test()
Dim c As Integer
c = 3
'------------------------------------------------------------------------------
Range("A1").Select ' select cell
SendKeys "{F2}", True ' activate formula bar. cursor is to right of contents.
DoEvents
'------------------------------------------------------------------------------
'- move cursor 3 characters to the left in the formula bar
'- or in the cell if Tools/Options/Edit .. "Edit directly in cell" is checked
SendKeys "{LEFT " & CStr(c) & "}", True ' ="{LEFT 3}"
DoEvents
End Sub
'-----------------------------------------------------------------------------------
source: http://www.mrexcel.com/forum/excel-questions/282172-setting-cursor-position-cell-text-using-visual-basic-applications.html
的最終目標是使之能夠插入一些標準的子串,而在細胞打字。例如,我想通過使用右鍵單擊我輸入單元格時插入[hi this is standard string X-XXX-XXXX]
。
編輯:
我試着使用的SendKeys到我的字符串直接發送,但我只是得到從Excel的「ping」聲,表明它是不可能的。這是我曾嘗試:
With fbar.Controls.add(Temporary:=True, Type:=msoControlButton, Before:=1)
.BeginGroup = False
.FaceId = 267
.Caption = wsLabels.GetLabel("rcRefMoM")
.OnAction = "'" & ThisWorkbook.Name & "'!'rcAddRef2 '"
End With
Function rcAddRef2()
SendKeys (" [Ref:X \NAME]")
End Function
編輯2:其實它甚至沒有在所有進入我的rcAddRef2功能,它只是坪直線距離,因爲我在編輯模式。如果我在那裏放一個,它不會激活一個斷點。所以Sendkeys可能不是問題,就像讓函數運行一樣。
,如果我嘗試它的工作原理在Cell命令欄很好,所以我茫然了一下:
'This runs
With cbar.Controls.add(Temporary:=True, Type:=msoControlButton, Before:=1)
.BeginGroup = False
.FaceId = 267
.Caption = wsLabels.GetLabel("rcRefMoM")
.OnAction = "'" & ThisWorkbook.Name & "'!'rcAddRef2 '"
End With
我只是想到了一些東西......我可以直接使用SendKeys鍵入我想要的文本而不會檢查光標位置嗎?這被認爲是一個強有力的方法?編輯:沒有工作 –
是我的看法還是你試圖模仿[autocorrect行爲](http://www.techonthenet.com/excel/questions/auto_correct2010.php)莫名其妙? – Sgdva
我不會認爲'SendKeys'是一種可靠的方法。試想一下,當你在運行宏時,有人正在打字。如果在用戶輸入時需要更多控制,爲什麼不使用帶有文本框的自定義窗體?有各種各樣的事件,包括'DoubleClick'和'MouseDown'以將預定義文本添加到文本框的當前值。 – Ralph