我知道这是一个非常基本的问题,但我仍在努力培养我的 VBA 技能。我处于一个困境中,我已经将收到的各种报告制作成一个映射系统,这些报告被放置在一个已编译的工作簿中。这些报告具有完全不同的格式等。我有一个复制/粘贴宏,可以复制列并将它们放置在已编译工作簿上的正确位置。
但是,我遇到了很多重复/空行搞砸了我的宏的情况。我使用了两个 VBA 函数来解决这个问题,一个是“如果参考列为空白则删除行”:
Sub DeleteBlankARows()
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
Dim r As Long
For r = Cells(Rows.Count, 6).End(xlUp).Row To 1 Step -1
If Cells(r, 6) = "" Then Rows(r).Delete
Next r
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With End Sub
这将删除 F 列中的单元格为空的行
我还使用复制/粘贴宏:
Sub CopyUntilBlank()
Dim last_row As Integer
last_row = Range("f1").End(xlDown).Row
Dim rng As Range
Set rng = Range("d2:d" & last_row)
For Each cell In rng.Cells
cell.Activate
If ActiveCell.Value = "" Then
ActiveCell.Value = ActiveCell.Offset(-1, 0).Value
End If
Next cell End Sub
这将复制并粘贴 D 列中的空白行,直到您点击一个非空白单元格,然后重新执行此操作,直到 F 列中的值范围。
这些宏对我来说效果很好,但是因为我有多个这样的工作表,所以我想创建一个使范围动态的单元格引用。例如:在 DeleteBlankRows 宏中,我希望根据 sheet1 中的单元格值确定 Cells(r,6) 中的列引用 - 例如,如果工作表 1 上的单元格 A1 中的值为 2,它将改变列对“2”的引用(B 列)。
我希望复制/粘贴宏也能发生同样的情况。我很确定这只是对 A1.Value 的一些参考,但我不知道如何正确编写这样的东西。
感谢您的支持,在社区的所有支持下,我已经走了很长一段路。