从一个单元格创建一个弹出 InputBox 并将值右移到下一个
Posted
技术标签:
【中文标题】从一个单元格创建一个弹出 InputBox 并将值右移到下一个【英文标题】:Create A popup InputBox from a cell and right the value to the next one 【发布时间】:2014-04-04 11:46:18 【问题描述】:您好,这是我在这里的第一个问题,我是 VBA 编程的新手。我正在寻找一个 VBA 代码,当我在一系列单元格上选择一个单元格时,它允许我弹出一个输入框来放置一些值。 例如,当我从 B 列中选择一个单元格时,会弹出一个输入框,需要一个值转到 C 列中的下一个单元格。那是因为在 B 列中我存储了一个公式(并且单元格被锁定)并且我不喜欢由用户删除或更改,尽管我需要通过公式计算他的输入值,所以我选择将此值存储在它旁边的隐藏单元格中,并将引用添加到我的公式中。 VBA 怎么可能? 提前致谢, 哈里斯
【问题讨论】:
【参考方案1】:此技术使用双击而不是单击。您的保护必须允许用户双击列 B
中的单元格在工作表代码区输入以下事件宏:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim t As Range, B As Range
Set t = Target
Set B = Range("B:B")
If Intersect(t, B) Is Nothing Then Exit Sub
Cancel = True
t.Offset(0, 1).Value = Application.InputBox(Prompt:="Enter data value", Type:=1)
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
必须启用宏才能正常工作!
【讨论】:
【参考方案2】:我建议使用以下代码:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Selection.Count = 1 Then
If Not Intersect(Target, Range("B:B")) Is Nothing Then
Cells(Target.Row, Target.Column + 1).Value = Application.InputBox("Insert your value please")
End If
End If
End Sub
如果您选择 B 列中的任何单元格并将值放入 C 中的单元格,则会弹出一个输入框。您必须将代码直接放入 VBA 窗口中的特定工作表中。
【讨论】:
非常感谢您抽出宝贵的时间,我想我会使用双击的方法,用户会觉得它更实用,谢谢。以上是关于从一个单元格创建一个弹出 InputBox 并将值右移到下一个的主要内容,如果未能解决你的问题,请参考以下文章
如何将单元格插入 UITableViewController
有没有办法检查左侧单元格的值并将计数加两个,除非在同一行的另一个单元格中输入了一个值?
[从一个单元格获取值,并将其聚焦在另一张表上,Vba Excel