vba - VBA - 如果单元格值更改,则移动行
问题描述
如果我更改特定行中的值,VBA 是否有办法移动特定范围内的行?
在图片中你可以看到我的桌子:
范围 A4:B7 中的日期采用德语格式 (DD.MM.YYYY),范围 D3:O3 中的标题标签只是文本格式。
因此,例如当我将 B5 中的值更改为 01.12.2019 时,我希望该行中的单元格从 E5:H5 移动到 L5:O5。
这是我到目前为止所拥有的:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastrow As Long
lastrow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1
If Target.Address = "$B$3:" & lastrow Then
Call Mymacro
End If
End Sub
但我真的不知道我必须如何编写宏。我希望有一个人可以帮助我。谢谢
编辑:
可以解决。感谢所有试图提供帮助的人:)
这是我现在使用的代码。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Dim DelRng As Range
Dim Rng As Range
Dim rngyear As Range
Dim rngmonth As Range
Dim lastrow As Long
Dim year As String
Dim month As String
Dim FAA As Integer
Dim MFG As Integer
Dim AGA As Integer
lastrow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1
Set KeyCells = Range("H11:H" & lastrow)
year = Format(ActiveCell.Value, "yyyy")
month = Format(ActiveCell.Value, "mmm")
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
Set DelRng = Range("N" & Target.Row & ":BI" & Target.Row)
DelRng.ClearContents
Set rngyear = ActiveSheet.Range("N1:BI1").Find(What:=year, LookAt:=xlWhole, SearchDirection:=xlPrevious)
If Not rngyear Is Nothing Then
Set rngmonth = ActiveSheet.Range(Cells(Target.Row, rngyear.Column), Cells(2, rngyear.Column + 11)).Find(What:=month, LookAt:=xlWhole, SearchDirection:=xlPrevious)
If Not rngmonth Is Nothing Then
ActiveSheet.Cells(Target.Row, rngmonth.Column).Value = "DEL"
If IsEmpty(ActiveSheet.Range("N" & Target.Row)) Then
FAA = ActiveSheet.Cells(Target.Row, rngmonth.Column).Find(What:="DEL", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column - 1
ActiveSheet.Cells(Target.Row, faa).Value = "FAA"
End If
If IsEmpty(ActiveSheet.Range("N" & Target.Row)) Then
MFG = ActiveSheet.Cells(Target.Row, rngmonth.Column).Find(What:="DEL", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column - 2
ActiveSheet.Cells(Target.Row, faa3).Value = "MFG"
End If
If IsEmpty(ActiveSheet.Range("N" & Target.Row)) Then
AGA = ActiveSheet.Cells(Target.Row, rngmonth.Column).Find(What:="DEL", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column - 3
ActiveSheet.Cells(Target.Row, faa2).Value = "AGA"
End If
End If
End If
End If
End Sub
解决方案
推荐阅读
- javascript - .is-invalid 呈现为 .is-valid
- html - 将 XSLT 属性解析为数组
- java - 制作清单。第一个列表可以有相同的数字,第二个是价格,尝试制作第三个列表,如果它们是相同的数字,它会添加价格
- django - 更新模型信息的表格是空白的
- python - 转换数据类型 Pandas 数据框
- java - 在 Eclipse 中添加 Twitter Jar 文件作为 Maven 依赖项
- flutter - 在 Flutter 中,如果我将我的方法放在小部件的构建方法内部或外部,会有区别吗?
- vba - MS Access:一键上传多个文件
- java - java mvn:包 javax.activation 不存在并且 mvn install 没有解决它
- vba - 如何对选择查询的列值求和