gpt4 book ai didi

excel - 在表格中每隔两行着色

转载 作者:行者123 更新时间:2023-12-03 15:57:47 25 4
gpt4 key购买 nike

我有一个包含一些合并单元格的表格,我想通过 VBA 代码从第一行开始每隔一行上色。

我就是这样尝试的:

Sub test()
Dim Zeile As Long
With Tabelle2
For Zeile = 1 To .UsedRange(Rows.Count).End(xlUp).Row Step 2
.Range(.Cells(Zeile, 1),.Cells(Zeile,8)).Interior.ColorIndex= 15
Next
End With
End Sub

该表如下所示:

enter image description here

应该是这样的:

enter image description here

先感谢您!

最佳答案

我相信你正在寻找这样的东西。

我们添加了一个 bool 标志,以便我们可以使用它来回翻转 (cf)。

我们可以Resize MergeArea而不是单元格值本身。

如果有合并的单元格,它将考虑该区域 - 如果没有,则不会。

然后,添加势 MergeArea单元格计数到我们的行计数器(Zeile)。

Sub ColorEveryOther()
Dim cf As Boolean
Dim Zeile As Long
Dim lr As Long
lr = ActiveSheet.UsedRange.Rows.CountLarge
For Zeile = 1 To lr
If Not cf Then Range("A" & Zeile).MergeArea.Resize(, 8).Interior.ColorIndex = 15
Zeile = (Zeile + Range("A" & Zeile).MergeArea.Cells.CountLarge) - 1
cf = Not cf
Next Zeile
End Sub

结果:

Results

编辑:

这是您更新的代码。

我还稍微清理了前面的代码。
Sub test()
Dim Zeile As Long
Dim cf As Boolean
With Tabelle2
For Zeile = 1 To .UsedRange(Rows.Count).End(xlUp).Row
If cf = False Then .Cells(Zeile, 1).MergeArea.Resize(, 8).Interior.ColorIndex = 15
Zeile = (Zeile + .Cells(Zeile, 1).MergeArea.Cells.CountLarge) - 1
cf = Not cf
Next
End With
End Sub

评论的解释:
cf = Not cf只是一个捷径:
If cf = True Then
cf = False
Else
cf = True
End If

让我们设置 cf = False并穿过它。
cf = Not False = True cf = Not True = False
我希望解释是足够的:)

这样做的原因是我们不能只是 MOD行,因为它可能会发生可变数量的变化。

关于excel - 在表格中每隔两行着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48211461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com