excel - 循环遍历可变范围的单元格并用特定字符填充空单元格
问题描述
我正在学习 VBA,并设法从各种来源编译了大量代码,但我发现很难解决我当前的问题。我已经阅读了很多关于使用范围的解决方案,但我无法调整我看到的任何解决方案来解决我的问题。
我想要一个宏,当按下命令按钮时,它将识别一系列单元格中最后使用的行(随着时间的推移,行数会增加),然后检查每一行是否有该范围内的任何空单元格并用如果 A 列的同一行中有数据,则为字母“N”。
我目前有以下代码:
Private Sub CBtnFillAll_Click()
'
' EmptyCharacteristic Macro
' Fills empty cells in the characteristics columns with 'N'
'
Dim Lastrow As Integer
Dim rCell As Range
Dim rRng As Range
Lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Set rRng = ActiveSheet.Range("$H$3:$S" & Lastrow)
For Each rCell In rRng.Rows
If rCell.Value = "" And ActiveSheet.Cells(rRng.Row, 1).Value <> "" Then
rCell.Value = "N"
End If
Next rCell
End Sub
我正在检查 A 列,因为在我不想包含在该范围内的行中,从 B 列开始还有其他数据。要检查的范围总是在 H 列和 S 列之间。
我目前在以下行中收到“类型不匹配”错误:
If rCell.Value = "" And ActiveSheet.Cells(rRng.Row, 1).Value <> "" Then
请问有人可以帮我解决最后一部分的语法吗?
提前谢谢了。
解决方案
您的方法是完全正确的,但有一件事会造成问题:
For Each
将您的行更改为: For Each rCell in rRng
。
我会做一些不同的事情,所以这是我的完整代码:
Sub test()
Application.ScreenUpdating = False
Dim Lastrow As Long
Dim rCell As Range
Dim aCell As Range
Dim rRng As Range
Dim Currentrow As Long
Lastrow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
Set rRng = ActiveSheet.Range("H3:S" & Lastrow)
For Each rCell In rRng
Currentrow = rCell.Row
Set aCell = ActiveSheet.Range("A" & Currentrow)
If Not IsEmpty(aCell.Value) And IsEmpty(rCell.Value) Then
rCell.Value = "N"
End If
Next
Application.ScreenUpdating = True
End Sub
推荐阅读
- java - 如何忽略大小写并考虑字母数字字符
- linux - vagrant up 命令 SSL 证书问题
- android - Tablayout 在 Android kotlin 的 Fragment 中不起作用
- python - 即使为 pandas 指定编码也是错误的编码
- python - Python删除嵌套的JSON键或将键与值组合
- javascript - 在本机反应中根据时间轴绘制手机加速度计的实时数据
- qemu - Qemu 原生到 Libvirt XML
- javascript - 使用 Javascript 中的数组验证设备 ID
- javascript - 将相同的 JavaScript 代码应用于多个画布?
- react-native - 如何使用 Amplify 将我的 React Native 应用程序连接到现有数据库?