VBA中的单元合并

VBA中的单元合并,vba,excel,Vba,Excel,你好,, 如果没有颜色,代码中的最后一个函数会清理我的单元格。我想添加合并单元格(因为我使用多个彩色单元格)并将所有边框应用于单元格。 我尝试了一些,但没有成功,这可能是因为我不能使用Dim单元格作为范围来合并它们。 谢谢你的帮助 谢谢你的回答。我解释不清楚。我希望在此之后合并单元格 Sub colorcells() Dim cell As Range For Each cell In Range("Range1") If InStr(cell.Value, "

你好,, 如果没有颜色,代码中的最后一个函数会清理我的单元格。我想添加合并单元格(因为我使用多个彩色单元格)并将所有边框应用于单元格。 我尝试了一些,但没有成功,这可能是因为我不能使用
Dim单元格作为范围
来合并它们。 谢谢你的帮助


谢谢你的回答。我解释不清楚。我希望在此之后合并单元格

Sub colorcells()
    Dim cell As Range
    For Each cell In Range("Range1")
        If InStr(cell.Value, "Person1") > 0 Then
            cell.Interior.Color = XlRgbColor.rgbSienna
        ElseIf InStr(cell.Value, "") > 0 Then
            cell.Interior.Color = XlRgbColor.rgbLightGrey
        ElseIf InStr(cell.Value, "") = 0 Then
            cell.Interior.Color = XlRgbColor.rgbWhite
        End If
    Next cell
End Sub

我想做的是打扫卫生。如果没有字符串,我的代码会使单元格变为白色。然后我需要它也合并没有字符串值的单元格。

我也不清楚您可能想要实现什么。你提供的代码对我来说似乎很好用。但是,如果您希望以不同的方式处理合并的单元格,那么以下代码调整可能会有所帮助:

ElseIf InStr(cell.Value, "") = 0 Then
            cell.Interior.Color = XlRgbColor.rgbWhite 

合并的单元格不好,不好,不好,应该避免。只需在几个单元格周围创建一个边框。如果要将文本居中,请使用
.HorizontalAlignment=xlCenterAcrossSelection
,尽管@teylyn的评论已被提升,但我不能同意。合并单元格应谨慎使用,但它们提供了其他任何方式都无法提供的功能。您可以询问单元格是否是合并区域的一部分,以及合并区域是什么,以便对其进行维护和管理。如果使用
xlCenterAcrossSelection
在A:C和D:F之间分别居中,则以后无法检测哪些单元格属于哪个组。如果有与
xlCenterAcrossSelection
相关联的有用功能,我想了解一下。您说要将合并的单元格添加到子程序中,但没有说明为什么不能。请描述您的问题。合并所有空单元格似乎是一个奇怪的要求。您只能合并一个矩形。例如,如果合并G18:G19,然后合并G18:H18,则合并G18:H19。你看过Ralph如何判断(1)一个单元格是否合并,以及(2)它是否是合并区域左上角的单元格吗?刚才注意到
InStr(cell.Value,”)
。这将始终返回1
您是指单元格.Value”“
Sub colorcells()
Dim cell As Range

For Each cell In Range("Range1")
    If cell.Address = cell.MergeArea.Cells(1, 1).Address And cell.MergeArea.Cells.Count > 1 Then
        Debug.Print "Here is a merged cell range starting (top left corner): " & cell.Address
        cell.Interior.Color = XlRgbColor.rgbRed
    Else
        If InStr(cell.Value, "Person1") > 0 Then
            cell.Interior.Color = XlRgbColor.rgbSienna
        ElseIf InStr(cell.Value, "") > 0 Then
            cell.Interior.Color = XlRgbColor.rgbLightGrey
        ElseIf InStr(cell.Value, "") = 0 Then
            cell.Interior.Color = XlRgbColor.rgbWhite
        End If
    End If
Next cell

End Sub