Excel 自动添加到列表

Excel 自动添加到列表,excel,vba,Excel,Vba,这是我第一个使用Excel宏的大学IT项目,我在处理数据时遇到了一个小问题 我有几个复选框来选择屏幕上的各种项目,然后输入相关数据,如项目名称、价格等。问题是这些名称必须记录在发票上,我无法很好地将名称转移到发票上 基本上,发票必须记录项目(显然),但需要检查项目是否已应用于发票,这就是我遇到的问题 如何让项目在没有任何额外交互的情况下集中显示在工作表上(也就是说,我只需单击相关复选框而不是手动输入),并将它们很好地显示出来 “参考底图和延长保修期”项目需要一个接一个地显示,而不是2-3盒 例如

这是我第一个使用Excel宏的大学IT项目,我在处理数据时遇到了一个小问题

我有几个复选框来选择屏幕上的各种项目,然后输入相关数据,如项目名称、价格等。问题是这些名称必须记录在发票上,我无法很好地将名称转移到发票上

基本上,发票必须记录项目(显然),但需要检查项目是否已应用于发票,这就是我遇到的问题

如何让项目在没有任何额外交互的情况下集中显示在工作表上(也就是说,我只需单击相关复选框而不是手动输入),并将它们很好地显示出来

“参考底图和延长保修期”项目需要一个接一个地显示,而不是2-3盒

例如:

参考底图
延长保修期

但我不想这样:

参考底图

延长保修期

有解决办法吗?如果这让人困惑,我真的很抱歉,请记住,在没有告诉我问题出在哪里之前,请不要投反对票

更新:

基本上,如果我按照我知道的方式做,就会发生这种情况:


我通过制作一个自定义Excel VBA宏来解决这个问题,该宏基本上告诉我们最靠近发票顶部的空闲单元格:

Public Function GetApplicableCell() As String
    Range("C20").Select
    If (IsEmpty(Range("'Invoice Sheet'!C20").Value)) Then
        GetApplicableCell = "C20"
    End If
    If (IsEmpty(Range("'Invoice Sheet'!C21").Value)) Then
        GetApplicableCell = "C21"
    End If
    If (IsEmpty(Range("'Invoice Sheet'!C22").Value)) Then
        GetApplicableCell = "C22"
    End If
    If (IsEmpty(Range("'Invoice Sheet'!C23").Value)) Then
        GetApplicableCell = "C23"
    End If
    If (IsEmpty(Range("'Invoice Sheet'!C24").Value)) Then
        GetApplicableCell = "C24"
    End If
End Function
它可以由工作表中的
=getApplicatableCell()
调用,我们可以使用它来生成可行的解决方案