问题的简短版本:当用户点击给定单元格范围内的数字[Enter]键时,如何在Excel 2010中运行宏,以及它们是否已更改自上次运行宏以来的电子表格?
更长版本:我在Excel 2010中有一个宏,我目前在工作表上有一个按钮,用户可以按下该按钮来运行它。用户输入4个数据单元格(在A2:D2中)并运行宏以使用数据填充多个表格上的多个表格。用户可以在一次坐下输入数百组数据,并且当前将鼠标悬停在按钮上,输入数据,并且单击鼠标而不移动它以按下按钮。我想通过按下数字[Enter]键来运行宏来简化它,这样他们就可以把手放在数字键区。
我找到this question,但答案是使用Worksheet_Change而用户不需要输入密钥。我还找到了this question,它在[Enter]键上使用,但也要求工作表更改为有用。
我的用户可能会多次使用相同的数据,因此我希望他们可以多次按[Enter]键。目前,宏通过选择A2(第一个包含数据的单元格)完成,因此用户可以输入新数据或再次按下它以再次运行它。我希望它从A2:D2范围内的任何地方运行,完成时选择A2(现在如此),如果在选择任何其他单元格时按下[Enter],或者选择任何其他工作表上的单元格,我希望它像目前一样向下移动一个单元格,而不运行任何宏。
有用的名字/数字/东西:
如果还有其他必要提供答案,我很乐意提供答案。
答案 0 :(得分:2)
这只是为了让你入门。假设用鼠标单击按钮运行InsertIntoTables()
。我假设InsertIntoTables()
位于标准模块中。 (这样可以轻松地从另一个子系统调用)
首先运行:
Sub NumericEnter()
Application.OnKey "{ENTER}", "InsertIntoTables"
End Sub
运行完毕后:
要恢复数字键盘 ENTER 键,请运行:
Sub ClearEnter()
Application.OnKey "{ENTER}", ""
End Sub
您必须完成的工作:
无论哪个工作表处于活动状态,数字小键盘 ENTER 键都会调用您的小节。您必须添加逻辑以检测哪个工作表处于活动状态并采取适当的操作。子文件完成后,您必须选择所需的单元格。您必须记住在退出前运行恢复子。
修改#1:强>
我有两张工作表; Sheet1 和 Sheet2 。
Sheet1 是我想要使用" special" 输入键。
我将以下内容放在标准模块:
中Sub NumericEnter()
Application.OnKey "{ENTER}", "InsertIntoTables"
End Sub
Sub ClearEnter()
Application.OnKey "{ENTER}", ""
End Sub
Sub InsertIntoTables()
MsgBox "Inserting"
End Sub
我将以下内容放在 Sheet1 代码区中:
Private Sub Worksheet_Activate()
Call NumericEnter
End Sub
Private Sub Worksheet_Deactivate()
Call ClearEnter
End Sub
我将以下内容放在工作簿代码区:
中Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call ClearEnter
End Sub
Private Sub Workbook_Open()
Sheets("Sheet2").Activate
Sheets("Sheet1").Activate
End Sub
Workbook_Open()
宏的目的是确保我们从 Sheet1 活动和"特殊"开始。 ENTER 键激活。
修改#2:强>
请改用:
Sub ClearEnter()
Application.OnKey "{ENTER}"
End Sub
参考: