用vba如何修改条件格式的应用范围
vba吧
全部回复
仅看楼主
level 1
五路尖冲 楼主
下面是一段代码,复制工作表中最后一行公式,在下面粘贴5行。
引发 一个小问题,d列设置了条件格式,d1:d1000(1000是最后一行)。
复制粘贴了5行后,这5行单独应用了同一个范围d1001:d1005.前面的d1:d1000没有变。相当于两个独立的条件格式。
现在希望用vba达到效果:复制粘贴5行后,修改条件格式应用范围,将d列已经设定的(1-1000)和新复制的(1001-10005)统一为d1:d列最后一行
哪位大侠帮帮忙,谢谢
AI给出的代码,提示对象不支持该属性或方法
With condFormat
.AppliesTo = ws.Range("D1:D" & lastRow)
Sub CopyLastRowFormulaDown()
Dim ws As Worksheet
Dim lastRow As Long
Dim formulaRange As Range
Dim pasteRange As Range
' 设置工作表对象
Set ws = ThisWorkbook.Sheets("图表") ' 改为指定的工作表名
' 找到A列最后一行有数据的单元格
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' 设置需要复制的区域,这里只复制A到D列的最后一行
Set formulaRange = ws.Range("A" & lastRow & ":F" & lastRow)
' 确定粘贴区域,即从最后一行的下一行开始的5行
Set pasteRange = ws.Range("A" & (lastRow + 1) & ":F" & (lastRow + 5))
' 复制公式
formulaRange.Copy
' 首先粘贴格式
pasteRange.PasteSpecial Paste:=xlPasteFormats
' 粘贴公式
pasteRange.PasteSpecial Paste:=xlPasteFormulas
' 释放所有选择
Application.CutCopyMode = False
' 定位到A列最后一行的下一行的第一个单元格
Set nextRowCell = ws.Range("A" & lastRow + 1)
Set formulaRange = Nothing
Set pasteRange = Nothing
End Sub
2024年07月20日 03点07分 1
level 8
MyG
Sub 加5行()
Set ws = ActiveSheet
lastRow = ws.Cells(ws.Rows.Count, "D").End(xlUp).Row
Set formulaRange = ws.Range("D1")
formulaRange.Copy
For i = lastRow + 1 To lastRow + 5
ws.Range("D" & i).PasteSpecial Paste:=xlPasteFormulas
Next i
Application.CutCopyMode = False
End Sub
其他列自己修改一下列
2024年07月20日 05点07分 2
level 8
MyG
2024年07月20日 05点07分 3
level 6
搞这么复杂,直接用LISTOBJECT吧
2024年07月20日 07点07分 4
1