gpt4 book ai didi

vba - Excel 根据用户更改范围中的另一个单元格来更新范围中的单元格值

转载 作者:行者123 更新时间:2023-12-03 03:32:09 24 4
gpt4 key购买 nike

我使用 Excel VBA 已经有一段时间了,但我仍然很新。我搜索了这些问题,发现了一些类似的东西,但没有一个是我能够根据我的需要正确修改的。

我有一个数据输入表,用户在 B 列中手动输入数据(来自经过验证的列表)。如果他在 B 列中选择 N/A,则需要清除 D 列和 H 列中的关联数据(对于同一行)。该工作表具有固定的常量行数。

我尝试了几种方法,但我在这里突破了我的理解极限。下面的方法看起来很简单,但是每次尝试都会导致excel崩溃。我已将其放入相应的工作表模块中。

Private Sub Worksheet_Change(ByVal Target As Range)

Dim i As Long
For i = 1 To 500
If Range("B" & i).Value = "N/A" Then
Range("D" & i,"H" & i).Value = ""
End If
Next i
End Sub

谁能告诉我我在哪里犯规了?

最佳答案

以下代码应该可以阻止内存溢出:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
'check whether anything needs to be processed
If Not Intersect(Target, Columns("B")) Is Nothing Then
Application.EnableEvents = False ' stop other events from firing
'process each cell that has changed
For Each c In Intersect(Target, Columns("B")).Cells
If c.Value = "N/A" Then
c.Offset(0, 2).Value = ""
c.Offset(0, 6).Value = ""
End If
Next
Application.EnableEvents = True ' allow other events to fire
End If
End Sub
<小时/>

注意:正如 A.S.H 在他们的回答中提到的,如果您实际上没有检查字符串 N/A,而是检查 #N/A 错误条件,您将需要更改 If 语句。

关于vba - Excel 根据用户更改范围中的另一个单元格来更新范围中的单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44837607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com