如何解决如何在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 举报,一经查实,本站将立刻删除。