Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 循环遍历可变范围的单元格,并用特定字符填充空单元格_Excel_Vba_Range - Fatal编程技术网

Excel 循环遍历可变范围的单元格,并用特定字符填充空单元格

Excel 循环遍历可变范围的单元格,并用特定字符填充空单元格,excel,vba,range,Excel,Vba,Range,我在学习VBA的过程中一直在努力,并设法从各种来源编译了大量代码,但我发现很难解决我目前的问题。我已经阅读了很多关于使用范围的解决方案,但我无法采用我所看到的任何解决方案来解决我的问题 我想要一个宏,当按下命令按钮时,该宏将识别单元格范围内最后使用的行(随着时间的推移,行数将增加),然后检查该范围内的每一行是否有空单元格,如果a列中的同一行中有数据,则用字母“N”填充 我目前拥有以下代码: Private Sub CBtnFillAll_Click() ' ' EmptyCharacterist

我在学习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
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