2015-10-20 67 views
0

谷歌並沒有給我很多我想要的東西,我想也許這樣可能會有答案。excel 2010 vba發送密鑰來模擬點擊公式欄

而不是使用輸入框或用戶提示,要求用戶的信息將存儲在單元格中,我正在尋找一些代碼來模擬在配方欄中單擊。我目前使用帶有「F2」的sendkeys方法來允許用戶在所選單元格中輸入信息。查看公式欄會更容易,而不是數據海中的單個單元格。

Sub CopyTemplate() 

'ActiveWorkbook.Save 
Worksheets("HR-Cal").Activate 
Dim rng As Range 
Dim trng As Range 
Dim tco As String 
'Use the InputBox select row to insert copied cells 
Set rng = Application.InputBox("select row to paste into", "Insert template location", Default:=ActiveCell.Address, Type:=8) 
If rep = vbCancel Then 
End If 

startrow = rng.Row 
' MsgBox "row =" & startrow 
Range("AG2") = startrow 

Application.ScreenUpdating = False 

'copy template block 
Range("C6").End(xlDown).Select 
Range("AG1") = ActiveCell.Row 

tco = "A5:AN" & Range("AG1") 
Range(tco).Select 
Selection.Copy 

Range("A" & Range("AG2")).Activate 
Selection.Insert Shift:=xlDown 

Range("c100000").End(xlUp).Select 
Selection.End(xlUp).Select 
'select first value 

Range("AG1:AG2").ClearContents 

Application.ScreenUpdating = True 

SendKeys "{F2}" 
SendKeys "{BS}" 

End Sub 

當代碼運行,這是用戶所看到的(第2欄第山坳2621)enter image description here

+0

您可以發佈代碼,所以我們有一個你所要完成什麼更好的主意嗎?而且,所有用戶必須做的是將身體移動到配方欄中,對嗎?或者我錯過了什麼? –

+1

我編輯了這篇文章,希望能讓事情變得更加清晰。 2621行,第二列是宏丟棄用戶的地方。現在,發送鍵允許用戶更改單元格中的值,但不允許他們從公式欄進行更改。有越來越多的人說他們想要這個功能。我只想說不,一切都很好,但我想我會試試看。也許有一些魔法可以幫助他們進入配方欄 –

回答

3

我不相信有一個按鍵「激活」公式欄。有可能是一個辦法做到多按鍵的事件,如<alt><tab><tab>...~nine years later and a couple of other keys~...<tab><tab>

的更快,更直接的方法是關閉「EditDirectlyInCell」設置:

Application.EditDirectlyInCell = False 

這將光標移到公式欄當你sendkey F2

你可以只是把這個事關上Workbook_Open()工作簿中的代碼:

Private Sub Workbook_Open() 
    Application.EditDirectlyInCell = False 
End Sub 

也許在Workbook_BeforeClose()你可以切換,設置回,所以你不改變自己的默認設置:

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    Application.EditDirectlyInCell = True 
End Sub 
+0

我會在今天下午測試這個,看看這是否會影響用戶可以用於輸入的4列 –