2015-10-20 61 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列 –