遇到的实际问题:
这个问题,是在我遇到一些明细表的时候,经常会将不需要的字段隐藏,或者组合起来,方便查看重要数据,但是每次都要手动去右键——>隐藏这个操作,而且需要隐藏的列比较多,还是分开的,特别麻烦所以我写了这个代码,来自动完成。
我的这些代码均可结合其他的常用代码使用,此篇我就介绍一下【_3】和【_1】的结合使用。
图示问题:
Sub 自动分级组合()Dim w1, sh1, folder, address, address2, i, i2, i3, ed, ed1, ed2, ed3, ed4, arr1, arr2, e, f Set ed1 = Range("A" & Rows.Count).End(xlUp) ed = ed1.Row ed2 = Range("A1").End(xlToRight).Column For i = 1 To ed2 Arr = Array("公司名称 ", "账薄 ", "参考段代码 ", "参考段说明 ", "往来代码 ", "往来说明 ", "备用段1 ", _ "备用段1描述 ", "备用段2 ", "备用段2描述 ", "现金流附表项目", "凭证来源 ", "凭证类别 ", "批名 ", _ "日记帐名称 ", "创建日期 ", "行号 ", "币种 ", "本位币金额借项 ", "本位币金额贷项 ", _ "原币金额借项 ", "原币金额贷项 ", "过帐状态 ", "冲销期间 ", "冲销状态") 'array括号里还可以增加其他需要组合的内容 If IsError(Application.Match(Cells(1, i), Arr, 0)) Then1 Else Columns(i).Group End If Next ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1 Cells(1, 1).SelectEnd Sub
说明一下:
我们能看到,这里分级组合的功能已经自动完成了!
但是这个字体还是宋体12号,看起来不是特别好看,那我们可以在点击一下【_1】中的我们补充的自动文本整理功能,将文本整理一下,看起来就舒服多了。
如图:
我们可以把【_1】和【_3】代码拼接一下,实现一步完成操作。
代码如下:
Sub 组合并调整格式()Dim w1, sh1, folder, address, address2, i, i2, i3, ed, ed1, ed2, ed3, ed4, arr1, arr2, e, f Set ed1 = Range("A" & Rows.Count).End(xlUp) ed = ed1.Row ed2 = Range("A1").End(xlToRight).Column For i = 1 To ed2 Arr = Array("公司名称 ", "账薄 ", "参考段代码 ", "参考段说明 ", "往来代码 ", "往来说明 ", "备用段1 ", _ "备用段1描述 ", "备用段2 ", "备用段2描述 ", "现金流附表项目", "凭证来源 ", "凭证类别 ", "批名 ", _ "日记帐名称 ", "创建日期 ", "行号 ", "币种 ", "本位币金额借项 ", "本位币金额贷项 ", _ "原币金额借项 ", "原币金额贷项 ", "过帐状态 ", "冲销期间 ", "冲销状态") 'array括号里还可以增加其他需要组合的内容 If IsError(Application.Match(Cells(1, i), Arr, 0)) Then1 Else Columns(i).Group End If Next ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1 '-----------------------------------------------------------------------以上为自动组合代码 ActiveSheet.UsedRange.Select With Selection.Font .Name = "微软雅黑" .Size = 9 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With Rows("1:1").Select Selection.Font.Bold = True If ActiveSheet.AutoFilterMode Then2 Else Rows("1:1").AutoFilter End If '-----------------------------------------------------------------------以上为文本整理代码 Cells(1, 1).SelectExcel.Application.ScreenUpdating = tureEnd Sub
说明一下:
合并后代码使用的动图如下:
稍微总结一下:
本人财务专业并在财务分析和财务BP搬砖3年,VBA这个我们做到了解基本用法,拿着别人的会用,已经基本足够应付工作了。举个例子,我们会用电脑,但是我们并不了解电脑的生产过程,也不用了解它怎么生产的,我们知道它怎么用就行了。
当然,如果和我一样,有兴趣的可以加深对它的了解,但是也不建议非常系统地学,我知道有大部分同学是从VAB什么时候产生开始学起的。其实我们以实用性为出发点,带着问题去学是最容易也是最快上手的。
比如我觉得每次都要手动点击组合这次演示的文本,效率好像有点低,然后就写串代码出来,让它来解决就行了。实在不会写,再去搜索看看别人的代码及其用法,有没有更简单的方法解决。
结束!