我有一本包含两张表的工作簿,分别标有Sheet 1
和Sheet 2
。
我Sheet 2
有一个范围A5:A10
。我希望能够单击该范围内的单元格并将其内容输入到中的单元格中Sheet 1
。
所以范围A5:A10
是
1001
1002
1003
1004
1005
1006
我想单击单元格 A6(在 中Sheet 2
),并将 A6 的值 1002 放入 中Sheet 1 C3
。这样C3
现在就有 1002。
到目前为止,我不得不手动输入值Sheet 1
,但我不仅想在文档内进行超链接,还想改变 C3 的值。
答案1
在 的工作表代码区域中输入以下事件宏Sheet2
:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim A As Range
Set A = Range("A5:A10")
If Intersect(Target, A) Is Nothing Then Exit Sub
Cancel = True
Application.EnableEvents = False
Target.Copy Sheets("Sheet1").Range("C3")
Application.EnableEvents = True
End Sub
请注意,代码使用工作表1而不是第 1 页。(如果您正在使用,请更改此项Sheet 1
)
因为它是工作表代码,所以很容易安装并自动使用:
- 右键单击 Excel 窗口底部附近的选项卡名称
- 选择查看代码-这将打开一个 VBE 窗口
- 粘贴内容并关闭 VBE 窗口
如果您有任何疑虑,请首先在试用工作表上尝试一下。
如果您保存工作簿,宏将随之保存。如果您使用的是 2003 以后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx
到消除宏:
- 调出如上所示的 VBE 窗口
- 清除代码
- 关闭 VBE 窗口
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
要了解有关事件宏(工作表代码)的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/event.htm
必须启用宏才能使其工作!
编辑#1:
要允许宏将数据存放在受保护的工作表上:
- 取消工作表保护
- 解锁特定单元格,例如C3
- 重新保护工作表
这将允许宏(和用户)在工作表上输入数据并保护公式等。
编辑#2:
为了避免复制格式,请改用以下格式:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim A As Range
Set A = Range("A5:A10")
If Intersect(Target, A) Is Nothing Then Exit Sub
Cancel = True
Application.EnableEvents = False
Target.Copy
Sheets("Sheet1").Range("C3").PasteSpecial Paste:=xlPasteValues
Application.EnableEvents = True
End Sub
要在发生错误后“启动”例程,请将此宏放入标准模块并运行它:
Sub qwerty()
Application.EnableEvents = True
End Sub