我有一张 Excel 人口普查表,需要列出指定区域中的人员姓名。有一定数量的房间可以容纳人员,但房间并不总是满的。当房间中没有人时,我希望姓名字段显示单词“姓名”,但不打印单词“姓名”。然后,当房间满员时,我希望任何人都可以输入新人的姓名,并且该姓名既显示又打印,完全取代单词“姓名”,直到该人离开并且房间再次开放。有没有办法让单元格显示一个占位符,该占位符仅在有人输入该单元格时显示,然后当该单元格再次变为空白时重新出现?
答案1
通常这是不可能的。但是 Excel 有一个功能,您可以“滥用”它来实现这种方式。
在您想要输入数据的列前面直接创建一列。
例如,如果 C1 中有一个带有“名称”的空单元格,则在 C 列之前插入一列,因此 C1 变为 D1,而 C1 为空。
现在在 C1 中输入“名称”,并将 D1 留空。
现在来介绍技巧,将 C 列的宽度改为 1 像素大。由于 D1 为空,C1 将继续与 D1 重叠显示。但是,只要您在 D1 中输入文本,“名称”就会重叠,不再显示。它可能可见 1 像素,但这是我们能做的最好的事情。
答案2
这是单元格的示例B9. 将以下内容事件工作表代码区域中的宏。一旦安装,它将持续监视单元格。如果您清除单元格,宏会将“名称”放入单元格中:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MyCell As Range
Set MyCell = Range("B9")
If Intersect(MyCell, Target) Is Nothing Then Exit Sub
If MyCell.Value <> "" Then Exit Sub
Application.EnableEvents = False
MyCell.Value = "Name"
Application.EnableEvents = True
End Sub
因为它是工作表代码,所以非常容易安装和自动使用:
- 右键单击 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
必须启用宏才能使其工作!