Excel 循环遍历可变范围的单元格,并用特定字符填充空单元格
我在学习VBA的过程中一直在努力,并设法从各种来源编译了大量代码,但我发现很难解决我目前的问题。我已经阅读了很多关于使用范围的解决方案,但我无法采用我所看到的任何解决方案来解决我的问题 我想要一个宏,当按下命令按钮时,该宏将识别单元格范围内最后使用的行(随着时间的推移,行数将增加),然后检查该范围内的每一行是否有空单元格,如果a列中的同一行中有数据,则用字母“N”填充 我目前拥有以下代码:Excel 循环遍历可变范围的单元格,并用特定字符填充空单元格,excel,vba,range,Excel,Vba,Range,我在学习VBA的过程中一直在努力,并设法从各种来源编译了大量代码,但我发现很难解决我目前的问题。我已经阅读了很多关于使用范围的解决方案,但我无法采用我所看到的任何解决方案来解决我的问题 我想要一个宏,当按下命令按钮时,该宏将识别单元格范围内最后使用的行(随着时间的推移,行数将增加),然后检查该范围内的每一行是否有空单元格,如果a列中的同一行中有数据,则用字母“N”填充 我目前拥有以下代码: Private Sub CBtnFillAll_Click() ' ' EmptyCharacterist
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
Private Sub-CBtnFillAll\u Click()
'
'EmptyCharacteristic宏
'用'N'填充特征列中的空单元格'
'
将最后一行设置为整数
变暗rCell As范围
暗rRng As范围
Lastrow=ActiveSheet.Cells(Rows.Count,1).End(xlUp).Row
Set rRng=ActiveSheet.Range($H$3:$S“&Lastrow)
对于rRng.行中的每个rCell
如果rCell.Value=“”和ActiveSheet.Cells(rRng.Row,1.Value)”,则
rCell.Value=“N”
如果结束
下一个rCell
端接头
我正在检查A列,因为有额外的数据从B列开始,在我不想包含在范围内的行中。要检查的范围始终在H列和S列之间
我当前在以下行中遇到“类型不匹配”错误:
If rCell.Value = "" And ActiveSheet.Cells(rRng.Row, 1).Value <> "" Then
如果rCell.Value=“”和ActiveSheet.Cells(rRng.Row,1.Value)”,则
有人能帮我理解最后一部分的语法吗
非常感谢。我想这可能会满足您的需求
Sub CBtnFillAll_Click()
' EmptyCharacteristic Macro
' Fills empty cells in the characteristics columns with 'N'
'
Dim rCell As Range, _
rRng As Range
For Each rRng In ActiveSheet.UsedRange.Columns("A:A").Cells
If IsEmpty(rRng) Then GoTo NextRow
For Each rCell In rRng.Offset(0, 7).Resize(1, 12)
If IsEmpty(rCell) Then rCell.Value = "N"
Next rCell
NextRow:
Next rRng
End Sub
如果希望省略工作表的前两行,则可以更改
For Each rRng In ActiveSheet.UsedRange.Columns("A:A").Cells
到
你的方法是完全正确的,但有一件事造成了问题: 将每个行的
更改为:rRng中每个rCell的
有几件事我可能会做得不同,因此下面是我的完整代码:
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
您正试图使用If rCell.value=”“
代码片段获取包含整列的范围值。谢谢DirtyDeffy-我今天学到了更多!我对你的答案投了更高的票,但由于我的支持率低,它不会出现!很乐意提供帮助-无需担心销售代表;)谢谢泰勒-今天我从你那里学到了更多。我同意这个答案,因为它是第一个到达的。
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