gpt4 book ai didi

excel - 事件单元格更改然后另一个单元格中的值更改

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

请帮助我解决下面的宏,当我更改 activecell 中的值时,它无法正常工作。

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False


Dim KeyCells As Range

kolumna = ActiveCell.Column
wiersz = ActiveCell.Row
komorka = Cells(wiersz, kolumna).Address
Set KeyCells = Range(komorka)

If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then

Target.Offset(0, 1) = Target * 12

End If
Application.EnableEvents = True
End Sub

但是当我像下面这样的代码时它工作但是当我改变单元格中的值时它工作:$D$3

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False


Dim KeyCells As Range

Set KeyCells = Range("$D$3")

If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
Target.Offset(0, 1) = Target * 12

End If
Application.EnableEvents = True

End Sub

所以我的代码的问题就在这里:

komorka = Cells(wiersz, kolumna).Address

非常感谢您的帮助

最佳答案

返回后移动

Application.MoveAfterReturn

  • 如果MoveAfterReturn 将不起作用设置为 True ,因为当您更改值时,光标会移动到下一个单元格,该单元格变为 ActiveCell所以它们永远不会相交(更正:如果您在 A 列并使用 Left 箭头确认输入或在 A1 中使用 Up 箭头等)。
  • 如果你设置 MoveAfterReturn 就可以了至 False ,所以我写了程序来切换它。添加 ButtonCommandButton并在必要时使用它来启用或禁用它。
  • 请注意,您必须使用 Enter 确认单元格输入。箭头不行。

工作表模块,例如Sheet1

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.MoveAfterReturn Then
If Not Application.Intersect(ActiveCell, Target) Is Nothing Then
Dim cValue As Variant: cValue = Target.Value
If IsNumeric(cValue) Then
Target.Offset(0, 1).Value = CDbl(cValue) * 12
End If
End If
End If
End Sub

标准模块,例如Module1

Option Explicit

Sub toggleMAR()
With Application
If .MoveAfterReturn Then
.MoveAfterReturn = False
Else
.MoveAfterReturn = True
End If
End With
End Sub

关于excel - 事件单元格更改然后另一个单元格中的值更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66505987/

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