gpt4 book ai didi

excel - 如何防止 Excel 表格格式覆盖 VBA 中范围的现有格式?

转载 作者:行者123 更新时间:2023-12-04 20:26:16 27 4
gpt4 key购买 nike

我正在使用需要使用表格的电子表格。我调整它的大小以仅包含标题和我正在使用的第一行数据,但是当我重新调整它以覆盖我所有的现有数据时,它会覆盖格式并将颜色重置为默认白色。我需要这些颜色,因为它们稍后会在代码中引用。有没有办法防止 table 这样做?

Dim FLF As Worksheet
Set FLF = Workbook("My Workbook").Sheets("FLF")

Dim x As Long
Dim lng As Long

With FLF
FLF.Activate

.ListObjects("Table1").Resize Range("$A$6:$K$7")

lng = .Cells(.Rows.count, "D").End(xlUp).Row

.Range("E7:G" & lng).NumberFormat = "0.00%"

.ListObjects("Table1").Resize Range("$A$6:$K$" & lng)

For x = 7 To lng
If .Range("A" & x).Interior.ColorIndex = 46 Then
TopPercent = .Range("K" & x).Value
Do
x = x + 1
.Range("K" & x) = TopPercent * .Range("F" & x).Value
.Range("K" & x).Font.FontStyle = "Italic"
Loop While .Range("A" & x + 1).Interior.ColorIndex = 36
End If
Next x

最佳答案

我试图重现你所描述的东西。我想我误解了正在发生的事情。

我做了一个表格,在表格下方放了一些数据,将单元格着色为黄色,然后将右下角的那个蓝色小东西拖到我的黄色数据上,将其包含在表格中。对我来说,它保持格式。

我唯一能想到的是,您手动将某种形式的填充应用于表格?您可以更改表格样式和格式。如果你想保留你的表格,我唯一能想到的就是在展开表格之前保存重要范围的颜色索引,然后在展开之后重新格式化该范围。这可以通过多种方式完成,但既然我们已经在 VBA 中,那么这个怎么样?

'I don't know how to Dim this in one line, sorry
Dim ColorIndexArray()
ReDim ColorIndexArray(ThisWorkbook.Sheets("FLF").Cells(ThisWorkbook.Sheets("FLF").Rows.Count, "A").End(xlUp).Row)

For i = 1 To ThisWorkbook.Sheets("FLF").Cells(ThisWorkbook.Sheets("FLF").Rows.Count, "A").End(xlUp).Row
ColorIndexArray(i) = ThisWorkbook.Sheets("FLF").Range("A" & i).Interior.ColorIndex
Next

'Do your stuff

For i = 1 To ThisWorkbook.Sheets("FLF").Cells(ThisWorkbook.Sheets("FLF").Rows.Count, "A").End(xlUp).Row
ThisWorkbook.Sheets("FLF").Range("A" & i).Interior.ColorIndex = ColorIndexArray(i)
Next

编辑:我尝试一次将所有索引加载到数组中但失败了,因此出现了循环。另外,如果您有数万或数十万行,并且您现在已经有一个数组,您可以对其进行计算以加快速度吗?但是,如果它只有几行,那就没关系了。

关于excel - 如何防止 Excel 表格格式覆盖 VBA 中范围的现有格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59899231/

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