循环遍历表,着色空行并删除已占用单元格中的空格

时间:2015-10-07 04:31:09

标签: excel vba excel-vba

我正在寻找一种循环遍历表格每行第三列的方法。 如果该单元格为空白,则应该遮蔽整行 如果该单元格被占用,它应该查找任何空格并用单个#替换所有空格(例如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

2 个答案:

答案 0 :(得分:2)

结构化表的VBA编码可能很痛苦。您可以将表格作为ListObject object$c = count($request->name[]); for($i=0;$i<$c;$i++){ $item = new item(); $item->name = $request->name[$i]; $item->description = $request->description[$i]; $item->rating = $request->rating[$i]; $item->save(); } Range object变量处理到.DataBodyRange property,并像处理任何其他工作表参考一样处理单元格地址。< / p>

Set

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 中的单个勾号是引用QuoteTable[Model '#]列所必需的。对ListObject表的任何引用都喜欢知道表所在的工作表。

您可能希望根据C列中的空白单元格考虑行突出显示的条件格式。

Table VBA Code ListObject

答案 1 :(得分:-1)

将“Z”更改为您需要的任何列

Model #