您的位置:首页 > 教育 > 锐评 > 中国纪检监察报电子版_徐州网站建设开发_爱站数据官网_武汉seo工作室

中国纪检监察报电子版_徐州网站建设开发_爱站数据官网_武汉seo工作室

2025/3/10 16:46:34 来源:https://blog.csdn.net/VBA6337/article/details/146135162  浏览:    关键词:中国纪检监察报电子版_徐州网站建设开发_爱站数据官网_武汉seo工作室
中国纪检监察报电子版_徐州网站建设开发_爱站数据官网_武汉seo工作室

《VBA高级应用30例》(版权10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中分发VBA程序,写好的程序可以升级。本套教程共三册三十个专题,本讲的内容是:VBA高级应用30例应用3在Excel中的ListObject对象:提取表内单元格的格式元素

分享成果,随喜正能量】 我平生的长进,全在受挫、受辱中得来。一定要咬紧牙关,积蓄自己的斗志,增长自己的智慧,方能成就不世之功。。

应用3 在Excel中的ListObject对象

在VBA中,表(Tables)的应用还是较普遍的,它们被称为ListObjects,这是Excel 2003引入的一个集合。但是对象模型的这一部分有很大的变化,我在这个专题简单给大家讲解一下应用,包括创建及一些格式操作。

8 提取表内单元格的格式元素

或许有的学员会问,如果需要表格中某个单元格的ThemeColor,为什么不简单地用cell.Interior.ThemeColor呢?这是因为我们要提取的单元格格式完全由表格的设置和选定的表格样式所规定的。为此,我们必须要获取表中单元格的格式元素,为了完成这个工作,我们需要:

1)找出单元格在表格中的位置(在标题行、第一列、表格的大部分)

2)确定表格设置:是否启用了行分条,是否有特殊格式的第一列

基于这些信息,我们可以从表样式中提取适当的TableStyleElement并读取其属性。我们在下面给出一个函数,这个函数返回名为oLo的表对象内的单元格oCell的TableStyleElement:

Function GetStyleElementFromTableCell(oCell As Range, oLo As ListObject) As TableStyleElement

Dim lRow As Long

Dim lCol As Long

'确定我们在表中的哪一行

lRow = oCell.Row - oLo.DataBodyRange.Cells(1, 1).Row

lCol = oCell.Column - oLo.DataBodyRange.Cells(1, 1).Column

With oLo

If lRow < 0 And .ShowHeaders Then

'位于第一行,并具有标题

Set GetStyleElementFromTableCell = oLo.TableStyle.TableStyleElements(xlHeaderRow)

ElseIf .ShowTableStyleFirstColumn And lCol = 0 Then

'在第一列上,并具有第一列样式

Set GetStyleElementFromTableCell = oLo.TableStyle.TableStyleElements(xlFirstColumn)

ElseIf .ShowTableStyleLastColumn And lCol = oLo.Range.Columns.Count - 1 Then

'在最后一列上,具有最后一列样式

Set GetStyleElementFromTableCell = oLo.TableStyle.TableStyleElements(xlLastColumn)

ElseIf lRow = .DataBodyRange.Rows.Count And .ShowTotals Then

'位于最后一行,并具有总计行

Set GetStyleElementFromTableCell = oLo.TableStyle.TableStyleElements(xlTotalRow)

Else

If .ShowTableStyleColumnStripes And Not .ShowTableStyleRowStripes Then

'在表中,有列条纹

If lCol Mod 2 = 0 Then

Set GetStyleElementFromTableCell = oLo.TableStyle.TableStyleElements(xlColumnStripe1)

Else

Set GetStyleElementFromTableCell = oLo.TableStyle.TableStyleElements(xlWholeTable)

End If

ElseIf .ShowTableStyleRowStripes And Not .ShowTableStyleColumnStripes Then

'在表中,有列条纹

If lRow Mod 2 = 0 Then

Set GetStyleElementFromTableCell = oLo.TableStyle.TableStyleElements(xlRowStripe1)

Else

Set GetStyleElementFromTableCell = oLo.TableStyle.TableStyleElements(xlWholeTable)

End If

ElseIf .ShowTableStyleColumnStripes And .ShowTableStyleRowStripes Then

If lRow Mod 2 = 0 And lCol Mod 2 = 0 Then

Set GetStyleElementFromTableCell = oLo.TableStyle.TableStyleElements(xlRowStripe1)

ElseIf lRow Mod 2 <> 0 And lCol Mod 2 = 0 Then

Set GetStyleElementFromTableCell = oLo.TableStyle.TableStyleElements(xlColumnStripe1)

ElseIf lRow Mod 2 = 0 And lCol Mod 2 <> 0 Then

Set GetStyleElementFromTableCell = oLo.TableStyle.TableStyleElements(xlRowStripe1)

Else

Set GetStyleElementFromTableCell = oLo.TableStyle.TableStyleElements(xlWholeTable)

End If

End If

End If

End With

End Function

代码的部分截图:

代码的讲解:

1)ListObject.DataBodyRange 属性:这个属性返回一 个Range 对象,该对象代表表格中除标题行之外的值范围。 此为只读属性。

2)ListObject.TableStyle 属性:获取或设置指定的 ListObject 对象的表样式。 读/写 Variant。

(待续)

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:



版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com