停止循环VBA(Application.InputBox)

时间:2015-06-08 00:57:34

标签: excel vba excel-vba

我正在做一个宏来计算从给定范围(起始单元格到结束单元格)的单元格值并迭代单元格,直到找到一个空单元格(没有值)。

所以工作流程应该是:

  1. 起始单元格(用户定义);
  2. 结束单元格(用户定义);
  3. 循环显示值,直到找到空单元格。 如果找到空单元格,则下一列(注意:我假设一个空单元格是该列的中断);
  4. 循环遍历列,直到到达结束单元格;
  5. 如果到达结束单元格,除非它是空的,循环遍历列直到找到空单元格;
  6. 停止程序。
  7. 它还应该从活动单元格中获取值并在更改列时计算总和(现在它只是一个想法,而不是主要问题)。

    我所遇到的问题是,允许用户选择结束,当它到达结束单元时,我会停止循环。

    这是我到目前为止所做的事情(注意:输入上没有错误处理,稍后再添加):

    Sub test01()
        Dim startCell As Variant
        Dim endCell As Variant    
    
        Range("A1").Select ' Starting cell position
        startCell = Application.InputBox("A", "A", , , , , Type:=8) 'Start of range
        endCell = Application.InputBox("B", "B", , , , , Type:=8)   'End of range
    
    
        Do
            If IsEmpty(ActiveCell) Then
                ActiveCell.EntireColumn.Select
                ActiveCell.Offset(0, 1).Select
    
            Else
                'Calculate data
                ActiveCell.Offset(1, 0).Select
    
                If ActiveCell.Column And ActiveCell.Row = endCell Then
                    Exit Do
                End If
    
            End If
    
        Loop
    
    End Sub
    

    对我做错了什么以及如何改进它的任何消息?谢谢:))

    PS。新的vba。

1 个答案:

答案 0 :(得分:0)

业务逻辑有点不清楚,因此根据最佳猜测,解决方案可能如以下Excel VBA代码段所示:

Sub test01()
    Dim startCell As Variant
    Dim endCell As Variant

    'Range("A1").Select ' Starting cell position
    startCell = Application.InputBox("A", "A", , , , , Type:=8).Address 'Start of range
    endCell = Application.InputBox("B", "B", , , , , Type:=8).Address   'End of range

    Range(startCell).Activate ' Starting cell position instead of "A1"

    Do
        If IsEmpty(ActiveCell) Then
            ActiveCell.EntireColumn.Select
            ActiveCell.Offset(0, 1).Select
            Exit Do
        Else
            'Calculate data
            ActiveCell.Offset(1, 0).Select
            If ActiveCell.Address = endCell Then
                Exit Do
            End If
        End If
    Loop
End Sub

希望这可能会有所帮助。