Excel 保留列标题为彩色的列,并删除其余列
我正在尝试阅读或查找带有任何颜色的列标题,并仅保留这些标题,删除其余标题 每次数据变化时,任何列名称或标题都可以是任何颜色 我明白了 错误438“对象不支持此属性方法” 在行Excel 保留列标题为彩色的列,并删除其余列,excel,vba,Excel,Vba,我正在尝试阅读或查找带有任何颜色的列标题,并仅保留这些标题,删除其余标题 每次数据变化时,任何列名称或标题都可以是任何颜色 我明白了 错误438“对象不支持此属性方法” 在行Set Body=….. 我无法确定我的select case方法的逻辑是否正确,或者if语句是否可以解决问题 选项显式 亚德尔科() 标题作为范围,正文作为范围,列作为长度,查找为布尔值,wsh作为工作表,wb作为工作簿 暗淡的颜色范围 将currentColumn设置为整数 Set header=ActiveWorkbo
Set Body=…..
我无法确定我的select case方法的逻辑是否正确,或者if语句是否可以解决问题
选项显式
亚德尔科()
标题作为范围,正文作为范围,列作为长度,查找为布尔值,wsh作为工作表,wb作为工作簿
暗淡的颜色范围
将currentColumn设置为整数
Set header=ActiveWorkbook.Worksheets(“Main”).UsedRange.Rows(1).Columns
Set body=ActiveWorkbook.Worksheets(“Main”).Offset(1).Columns
对于col=1到header.Count
found=HASCALOR(主体(col),vbGreen)
选择案例标题
案例被发现
其他情况
如果指令(1_
ActiveWorkbook.Worksheets(“Main”).UsedRange.Cells(1,currentColumn).Value_
“找到”,vbBinaryCompare)=0,然后
Active工作簿。工作表(“主”)。列(列)。删除
如果结束
结束选择
下一个
端接头
你能把全部代码都贴出来吗?我看不到有人在排队
SetBody=...
然而,你的目标是什么
HasColor(body(col), vbGreen)
你到底是怎么做的
但有一个问题:您试图实现在执行时删除所有列,其中标题(例如顶部单元格)不是任何颜色的,对吗?删除标题中不包含指定颜色的列
- 这是一个初级中间解决方案,它将使用指定工作表的标题行计算最后一列。然后,它将从最后一列循环到指定的第一列,并检查标题行中的每个单元格的填充颜色是否为绿色(
)。如果是(非绿色),它将隐藏/删除该列vbGreen
- 该代码仅适用于标题行中手动设置的颜色(包括通过
)。它不适用于VBA
条件格式
- 代码将被复制到标准模块中,例如
Module1
- 如果在包含此代码的工作簿中发生这种情况,则必须将所有出现的
替换为ActiveWorkbook
ThisWorkbook
- 运行此代码之前,请调整两个常量:
(标题行)和hRow
(第一列)First
- 请注意,无法撤消此操作。因此,出于测试目的,代码使用
而不是Hidden
。如果代码对您有效,请注释掉行Delete
并取消注释行ws.Columns(j).Hidden=True
ws.Columns(j).Delete
Option Explicit
Sub deleteColumns()
' Define constants.
Const hRow As Long = 1
Const First As String = "A"
' Define worksheet.
Dim ws As Worksheet
Set ws = ActiveWorkbook.Worksheets("Main")
' Show all columns.
ws.Columns.Hidden = False
' Calculate First Column.
Dim FirstCol As Long
FirstCol = ws.Columns(First).Column
' Calculate Last Column.
Dim LastCol As Long
LastCol = ws.Cells(hRow, ws.Columns.Count).End(xlToLeft).Column
' Declare variables.
Dim j As Long
' Loop through columns from First to Last Column.
For j = LastCol To FirstCol Step -1
' Check color in current cell.
If Not ws.Cells(hRow, j).Interior.Color = vbGreen Then
' Test with 'Hidden', later change to 'Delete'.
ws.Columns(j).Hidden = True
'ws.Columns(j).Delete
End If
Next j
End Sub
Sub showColumns()
ActiveWorkbook.Worksheets("Main").Columns.Hidden = False
End Sub
这些细胞是如何获得颜色的?手动,通过
VBA
或通过条件格式
?代码是否位于ActiveWorkbook
中?感谢您的详细解释,它可以工作感谢@VBASIC208