【问题标题】:Formatting based on cell value and surrounding rows基于单元格值和周围行的格式
【发布时间】:2018-07-25 14:53:23
【问题描述】:

我有一个 BOM 的 Excel 电子表格,我正在尝试有条件地格式化。数据的布局使得 A 列是项目编号。由于 BOM 有替代项,因此存在重复编号。我想浏览电子表格,对于每个项目编号,在 F 列中找到带有“活动”的项目并将它们突出显示为绿色并隐藏其他行上的替代项。如果没有“活动”项目,我想将项目突出显示为黄色并保持显示。我有当前的 vba 脚本来突出显示。如果您查看示例数据,我基本上希望每个项目编号有一行显示活动部分,但如果没有活动部分,则以黄色显示历史或停产部分

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim icolor As Integer
Dim lastrow As Long
Dim i As Integer
Dim cell As Range
Dim sheetname As String
sheetname = Application.ActiveSheet.Name
With Worksheets(sheetname)
    lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
Application.ScreenUpdating = False


For Each cell In Range("F1:F" & lastrow)
    Select Case cell.Value
        Case Is = "Active"
            cell.EntireRow.Interior.ColorIndex = 10
        Case Is = "Status"
            cell.EntireRow.Interior.ColorIndex = 15
        Case Is = ""
            cell.EntireRow.Interior.ColorIndex = 2
            cell.EntireRow.Hidden = True
        Case Else
            cell.EntireRow.Interior.ColorIndex = 6
    End Select
Next cell
Application.ScreenUpdating = True
End Sub

以下是一些示例数据的屏幕截图:

【问题讨论】:

  • 您能否提供您的数据图像以及您的预期结果?这可能有助于其他人了解一切如何运作以及您在寻找什么。
  • 我上传了一张截图,但由于我的声誉太低,我无法嵌入图片
  • 我继续为您编辑它。一旦我的编辑被批准,您应该会看到它嵌入。欢迎来到本站!
  • 为什么要在每次选择更改时都这样做?不应该是Worksheet_Change吗?由于 col F 中的单元格不会自动更改。
  • excel 电子表格是数据库的输出,所以我希望能够将 vba 脚本复制到每个电子表格,以便在我更改选择时它会运行一次。这样我就可以确保我不会更改单元格值来让它运行。

标签: excel vba formatting conditional


【解决方案1】:

您需要将行高设置为零才能隐藏它

cell.EntireRow.RowHeight = 0

但不要忘记在其他两种情况下重置它

 cell.EntireRow.AutoFit

【讨论】:

    【解决方案2】:

    请检查单元格值是否为NULL以及“”

    【讨论】:

      猜你喜欢
      • 2018-06-04
      • 1970-01-01
      • 1970-01-01
      • 2013-04-17
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多