根据另一个单元格值更改单元格范围
Posted
技术标签:
【中文标题】根据另一个单元格值更改单元格范围【英文标题】:Change range of cells base on another cell value 【发布时间】:2020-10-23 08:52:46 【问题描述】:我想编写一个适用于 excel 中 1000
行的 VBA 代码。在每一行中,一旦我将G
列中的单元格值更改为No
,相应的行(即H-Z
列)将自动填充X
。
我试着写了下面的代码,但是一直不行,只是偶尔出现,请问有人能帮帮我吗?
Private Sub Worksheet_Change(ByVal Target As Range)
'MsgBox Target.Address
If Not Application.Intersect(Range("B1:B100"), Range(Target.Address)) Is Nothing Then
Call Change_value
End If
End Sub
Sub Change_value()
If ActiveCell.Value = "No" Then
Cells(ActiveCell.Row, 4).Value = "Ok"
End If
End Sub
【问题讨论】:
是的,但请先花时间阅读this 还有worth a glance 还请记住,如果用户将No
粘贴到G25:G35
中,并且如果您想在所有行中使用X
,那么您也必须以不同的方式处理:)
@Siddharth Rout - 链接中的优秀提示!我暂时不会修改答案中的代码,我会等着看 Aiden 是否返回 SO。希望他们会像我一样关注您的链接并学到一些东西。
@kevin9999 哦,我的评论不是针对您的答案,因此无需修改,因为我发布了链接。我只是给了 Aiden 的链接以供进一步阅读。 :)
【参考方案1】:
@Aiden – 你的问题出了什么问题:
这是矛盾的。
您说您希望代码适用于“1000 excel 中的行”,但您的代码仅引用 100 行(“B1:B100”)
您说您希望它在“G 列”中的单元格发生变化时触发 sub- 但您的代码是指 B 列
因此,人们很难理解你的 意图真的是
你的代码应该被格式化为代码——我的意思是当 您输入您的问题,突出显示您的所有代码并选择 以 标记为这样
话虽如此,假设您确实接受了@horst 的建议并阅读了https://***.com/help/how-to-ask,我会给您一个解决方案。
当任务像这个一样简单时,您不需要从 Private Sub 中调用 sub。假设您的意思是 G 列和 1000 行,这应该适合您:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("G1:G1000"), Target) Is Nothing Then
If Target.Rows.Count > 1 Then Exit Sub
If Target.Value = "No" Then
Range(Target.Offset(0, 1), Target.Offset(0, 19)).Value = "X"
End If
End If
End Sub
【讨论】:
以上是关于根据另一个单元格值更改单元格范围的主要内容,如果未能解决你的问题,请参考以下文章
EXCEL VBA - 根据单元格范围和字符串创建动态下拉列表[关闭]