【问题标题】:dynamically open a inputbox in excel with VBA使用VBA在excel中动态打开一个输入框
【发布时间】:2017-07-07 06:31:37
【问题描述】:

我有一个 Excel 表格和一个特定区域。这个区域可以 以 Range("A1:A5") 为例,只需要接受 0 和 1。并且它必须自动打开一个输入框用户输入一个 0 (只点击一个按钮或类似的东西)。当然是在那一刻。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address.Value = 0 Then 'open InputBox End If End Sub

有这个,但这不起作用。

谢谢大家。

【问题讨论】:

  • 这不是一个你可以说出你想要什么并且任何人都可以为你工作的网站。人们在这里帮助你改进你已经尝试过的东西(可能效果不好)。
  • 我知道。谁说我什么都没做?而且我不希望任何人为我工作,我只是在寻找技巧。谢谢@Peh
  • 但是如果你没有展示你已经做过/尝试过的事情,你的“问题”(你甚至没有问过一个)听起来就像那样。没关系,阅读How to Ask 并发布您已经尝试过的代码(至少是minimal reproducible example)。如果您没有提出具体的编码问题或其他问题,很快就会被社区宣布为离题且过于宽泛。
  • 好的。对不起。不会再发生@Peh
  • 没关系,你可以edit你的问题并添加缺失的部分来改进你的问题。好的问题更有可能得到回答。

标签: vba excel


【解决方案1】:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    Dim valueEnter As Long, lastRow As Long
    Set rng = Range("A1:A5") 'specify your range here
    lastRow = Cells(Rows.Count, "B").End(xlUp).Row
    If Intersect(Target, rng) Is Nothing Or Target.Value <> 0 Then Exit Sub
    valueEnter = InputBox("Gebe die ein:", "Eingabe")
    If valueEnter >= 0 Then
        Range("B" & lastRow + 1) = valueEnter
    End If
End Sub

编辑:___________________________________________________________

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Dim rng As Range
    Dim valueEnter As Variant, lastRow As Long
    Set rng = Range("A1:A5") 'specify your range here
    lastRow = Cells(Rows.Count, "B").End(xlUp).Row
    If Intersect(Target, rng) Is Nothing Or Target.Value <> 0 Then GoTo Jump
    valueEnter = InputBox("Gebe die ein:", "Eingabe", 1)
    If IsNumeric(valueEnter) Then
        If valueEnter > 0 Then
            Range("B" & lastRow + 1) = CInt(valueEnter)
            Target.Value = ""
        End If
    Else
        Target.Value = ""
    End If
Jump:
    Application.EnableEvents = True
End Sub

【讨论】:

  • @flowers1234 - 提供write the value of the Inputbox into another table的详细信息。
  • 输入框的代码属于表 1。我想将输入框的值放入工作簿中表 2 的另一个范围内。 (仅将 Inputbox 的值写入 table2 范围 B1,B2,B3 中,始终在下一个为空 =)@Mrig
  • @flowers1234 - 所以输入框的值应该输入B1,如果不为空则输入B2,如果不为空则输入B3,以此类推?
  • 没错!我认为应该是这样的Cells(Rows.Count, 1).End(xlUp).Row
  • @flowers1234 - 这取决于你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多