Vba 在表格中循环,为空行着色并删除已占用单元格中的空格
我正在寻找一种方法来循环遍历表中每一行的第三列。 如果该单元格为空,则应为整行着色 如果该单元格已被占用,它应查找任何空格,并用单个Vba 在表格中循环,为空行着色并删除已占用单元格中的空格,vba,excel,Vba,Excel,我正在寻找一种方法来循环遍历表中每一行的第三列。 如果该单元格为空,则应为整行着色 如果该单元格已被占用,它应查找任何空格,并用单个替换所有空格(例如123 abc变为123 abc)。 它不应在表的标题行上运行 一些随机项目- 工作表名称为Quote 表名为QuoteTable 底纹应为RGB(255、248、220) 表中的行数始终会有所不同,但宏将始终检查表中名为Model.的第三列的内容 谢谢你的回答,我将尝试每一行,同时我提出了这个——它做了所有的事情,除了突出显示A-N中的每一行,而
替换所有空格(例如123 abc
变为123 abc
)。
它不应在表的标题行上运行
一些随机项目-工作表名称为
Quote
表名为
QuoteTable
底纹应为RGB(255、248、220)
表中的行数始终会有所不同,但宏将始终检查表中名为
Model.
的第三列的内容
谢谢你的回答,我将尝试每一行,同时我提出了这个——它做了所有的事情,除了突出显示A-N中的每一行,而不仅仅是正确的一行
Public Sub ValidateSKUs()
Dim sMfrPN As String
Dim tbl1 As Range
Dim myCell As Range
Set tbl1 = Sheets("Quote").Range("QuoteTable")
For Each myCell In tbl1.Columns(3).Cells
If myCell.Value = "" Then
Sheets("Quote").Range("A" & myCell & ":N" & myCell).Interior.Color = RGB(255, 248, 220)
Sheets("Quote").Range("A" & myCell & ":N" & myCell).Interior.Pattern = xlSolid
Else
sMfrPN = CleanUpPN(myCell)
myCell = sMfrPN
End If
Next
End Sub
Public Function CleanUpPN(ByVal sMfrPN As String) As String
Dim sPN As String
'Trim trailing spaces
sPN = Trim(sMfrPN)
'Replace space with #
sPN = Replace(sPN, " ", "#")
'remove multiple # (e.g. ##)
Do Until InStr(1, sPN, "##") = 0
sPN = Replace(sPN, "##", "#")
Loop
CleanUpPN = sPN
End Function
结构化表的VBA编码可能是一个难题。您可以将该表作为或
将变量设置为,并像处理任何其他工作表引用一样处理单元格地址
Sub fix_model_no()
Dim mn As Range
With Worksheets("Sheet1") '<~~ set this properly!
With .ListObjects("QuoteTable")
For Each mn In Range("QuoteTable[Model '#]")
If Len(Trim(mn.Value2)) Then
Intersect(.DataBodyRange, Rows(mn.Row)).Interior.ColorIndex = xlColorIndexNone
mn = Replace(Application.Trim(mn.Value2), Chr(32), Chr(35))
Else
mn.ClearContents
Intersect(.DataBodyRange, Rows(mn.Row)).Interior.ColorIndex = 3 'red
End If
Next mn
End With
End With
End Sub
Sub-fix\u model\u no()
暗锰砷范围
使用工作表(“Sheet1”)将“Z”更改为所需的任何列
Sub Oh_Ya()
Dim sh As Worksheet
Dim rng As Range, c As Range
Dim rws As Long, r
Set sh = Sheets("Quote")
With sh
rws = .Cells(.Rows.Count, "A").End(xlUp).Row
Set rng = .Range("C2:C" & rws)
For Each c In rng.Cells
c = Replace(c, " ", "#")
If c = "" Then
r = c.Row
Range("A" & r & ":Z" & r).Interior.Color = RGB(255, 248, 220)
End If
Next c
End With
End Sub
“循环通过每行的第三列”,这是否与循环通过“C”列相同?是的,循环通过“QuoteTable”的C列我不确定是否最好将其称为“C”或“Model”#“我有一个宏,当它在某个范围内时运行良好,但在最后使用的行之后会对空行进行着色,因此,我决定使用一个表而不是一个范围,现在必须重新编写宏,因为它不再像您使用的Application.Trim一样正常工作。但是如果值改为“123 abc”,它会工作吗?VBA会删除前导/尾随空格,但工作表会删除前导/尾随空格以及内联双空格。当然,你可以试一下,然后回来汇报。