gpt4 book ai didi

excel - VBA在工作表更改中从目标获取列号

转载 作者:行者123 更新时间:2023-12-04 22:31:03 25 4
gpt4 key购买 nike

我有一个需要通过工作表更改功能填写的值表。
我要做的是根据目标的位置更改 B-G 列中的单元格。

Private Sub Worksheet_Change(ByVal Target As Range)
If (Not Intersect(Target, Range(Cells(12, 2), Cells(14, 7))) Is Nothing) Then
Cells(16,Application.WorksheetFunction.Column(Target))="Hello"
End If
End Sub

我在同一个 worksheet_change 子程序中有类似的代码位,当我使用 Target.Offset(1,0) 时可以正常工作但由于我可能的目标范围超过 1 行,我不知道如何使它始终是第 16 行并且与目标相同的列....

最佳答案

您需要处理 Target 不仅仅是一个单元格并禁用事件处理的情况,因此当您更改工作表上的值时,Worksheet_Change 不会尝试在其自身之上运行。

这会将“hello”放入 B:G 中任何更改的单元格右侧的单元格中;本质上,您将在 Target 中每个单元格的关联行上的列 C:H 中添加“你好”。

Private Sub Worksheet_Change(ByVal Target As Range)

if not intersect(target, Range(Cells(12, "B"), Cells(14, "G"))) is nothing then
on error goto safe_exit
application.enableevents = false
dim t as range
for each t in intersect(target, Range(Cells(12, "B"), Cells(14, "G")))
t.Offset(1,0) = "hello"
next t
End If

safe_exit:
application.enableevents = true
End Sub

关于excel - VBA在工作表更改中从目标获取列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52731989/

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