从一个单元格创建一个弹出 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

从一个工作簿中查找单元格并将其复制到另一个工作簿

在EXCEL中 如何用VBA查找某特定单元格并返回该单元格的行和列值?

如何从服务器解析 json 值,并将其显示在 tableview 单元格中