微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在vba中只运行一次循环

如何解决如何在vba中只运行一次循环

实际上,我正在编写一个代码,如果我在单元格 B1 中输入“Hello”,它将找到第 1 列中的第一个空白单元格并输入“1”。但问题是当我输入“hello”时,第 1 列的所有单元格都被填充为“1”。 这是代码

Private Sub Worksheet_Change(ByVal Target As Range)

Dim ws As Worksheet
Set ws = ActiveSheet

If Range("B1").Value = "Hello" Then

    For Each cell In ws.Columns(1).Cells
        If IsEmpty(cell) = True Then cell.Value = "1": Exit For
    Next cell
    
End If

End Sub

其实我知道我的代码有问题。当我在单元格 B1 中输入 hello 时,循环调用。当循环找到输入时,它会无限执行。但我不能让循环只执行一次。请帮助任何人!

解决方法

一个单元格工作表更改

  • 这仅在您手动或使用 VBA 将“Hello”写入单元格 B1 时才有效。
  • 如果您单击单元格 B1 并按 Enter,尽管值未更改,但更改仍将“注册”。如果您想防止这种情况发生,您可以使用公共变量来“跟踪”更改并可能“涉及”Worksheet_Open 事件。
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Cells.CountLarge = 1 Then
        If Not Intersect(Range("B1"),Target) Is Nothing Then
            If Target.Value = "Hello" Then
                Dim cell As Range
                For Each cell In Columns(1).Cells
                    If IsEmpty(cell) Then
                        cell.Value = 1
                        Exit For
                    End If
                Next cell
           End If
        End If
    End If

End Sub

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。