ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 走自己的路

[求助] 用vba代码进行加边框的问题?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-11-22 18:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
红色的地方为修改的地方,其它没改变,只是把范围加大了。

Public Sub CreateSalarySheet()
Dim LastRow As Long, TempRow As Long
Dim i As Long
Dim arr1, arr2
Dim rng As Range

With Worksheets("工资表")
    LastRow = .Cells(65536, 2).End(xlUp).Row
    arr1 = .Range("a1").Resize(1, 29).Value
    arr2 = .Range("a2").Resize(LastRow - 1, 29).Value
End With

If SheetExist("工资条") = False Then
    ThisWorkbook.Worksheets().Add.Name = "工资条"
    Sheets("工资条").Range("a1").Resize(1, 11).ColumnWidth = 10.63
Else
    Sheets("工资条").Range("a1").Resize(2000, 29).Clear
End If
   
TempRow = 1

For i = 1 To LastRow - 1
    With Worksheets("工资条")
        Set rng = .Cells(TempRow, 1).Resize(2, 29)
        With rng
            .Cells(1, 1).Resize(1, 29) = arr1 '工资条目
            .Cells(2, 1).Resize(1, 29) = WorksheetFunction.Index(arr2, i, 0) '工资条内容
            '以下是设置每一个工资条的边框
            .Borders(xlEdgeLeft).LineStyle = xlContinuous
            .Borders(xlEdgeLeft).ColorIndex = xlAutomatic
            .Borders(xlEdgeLeft).Weight = xlMedium '如果是要细线框,把xlMedium改成xlThin
            
            .Borders(xlEdgeTop).LineStyle = xlContinuous
            .Borders(xlEdgeTop).ColorIndex = xlAutomatic
            .Borders(xlEdgeTop).Weight = xlMedium '如果是要细线框,把xlMedium改成xlThin
            
            .Borders(xlEdgeBottom).LineStyle = xlContinuous
            .Borders(xlEdgeBottom).ColorIndex = xlAutomatic
            .Borders(xlEdgeBottom).Weight = xlMedium '如果是要细线框,把xlMedium改成xlThin
            
            .Borders(xlEdgeRight).LineStyle = xlContinuous
            .Borders(xlEdgeRight).ColorIndex = xlAutomatic
            .Borders(xlEdgeRight).Weight = xlMedium '如果是要细线框,把xlMedium改成xlThin
            
            .Borders(xlInsideVertical).LineStyle = xlContinuous
            .Borders(xlInsideVertical).ColorIndex = xlAutomatic
            .Borders(xlInsideVertical).Weight = xlThin
            
            .Borders(xlInsideHorizontal).LineStyle = xlContinuous
            .Borders(xlInsideHorizontal).ColorIndex = xlAutomatic
            .Borders(xlInsideHorizontal).Weight = xlThin
        End With
    End With
    TempRow = TempRow + 3 '下一位员工
Next i


End Sub

TA的精华主题

TA的得分主题

发表于 2010-11-22 19:17 | 显示全部楼层
请测试:代码还是楼上的代码,实际应用要改相应的工作表名。

22222.rar

27.76 KB, 下载次数: 28

TA的精华主题

TA的得分主题

发表于 2010-11-22 19:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请楼主不要更改我在“工资表”所在工作表内做的“创建工资条”按钮!

我的程序是基于“工资表”内你所做的数据。离开这个工作表,这些操作都是不正确的!“工资条”这个工作表是自动生成的,你不能对其进行任何操作!也就是说你不能在这个工作表内再创建任何按钮。

如果你再次点击“创建工资条”按钮的时候,如果已经存在“工资条”这个工作表,则仅复制“工资条”内已经存在的边框格式!所以,我曾经说过,如果你发现“工资条”工作表内的格式不符合你的要求的时候,则需要将“工资条”这个工作表手动删除,然后才能再次点击“创建工资条”按钮!

看来楼主没有仔细看我在 9 楼写的说明!

原帖由 走自己的路 于 2010-11-22 13:12 发表
如果原工资表庞大数据的话。。。。缺边框 ........................

[ 本帖最后由 lu_zhao_long 于 2010-11-22 19:30 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-11-22 19:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
只要楼主按照我在 9楼的说明去做,你的要求肯定是能够实现的!

原帖由 走自己的路 于 2010-11-22 13:12 发表
如果原工资表庞大数据的话。。。。缺边框 ........................

TA的精华主题

TA的得分主题

发表于 2010-11-22 19:45 | 显示全部楼层
楼主看来不知道我在原来的“工资表”这个工作表内的“创建工资条”按钮是编辑有 VBA 代码的!这段代码可以保证创建工资条代码执行过程中不会有屏幕刷新时产生的闪烁现象!

所以,请楼主在没有彻底理解我写的代码之前不要在其他工作表内胡乱创建“ActiveX” 按钮来执行这段代码!要知道任何代码都是基于一定的条件来编写的。不按照最初的约定条件是会产生错误的!

TA的精华主题

TA的得分主题

发表于 2010-11-23 13:57 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-11-23 14:32 | 显示全部楼层
后来想了一下,把原来的代码稍作修改,代码的速度至少还可以提升10倍。

  1. Public Sub CreateSalarySheet()
  2. Dim LastRow As Long, TempRow As Long
  3. Dim LastColumn As Integer

  4. On Error Resume Next
  5. Dim sh As Worksheet, arr
  6. Set sh = Sheets("工资条")
  7. If Err.Number = 9 Then   '可以利用下标越界错误捕获来判断“工资条”这个工作表是否存在
  8.    Set sh = Sheets.Add(after:=Worksheets("工资表"))
  9.    sh.Name = "工资条"
  10. End If

  11. sh.Cells.Clear   '先清除所有内容

  12. With Worksheets("工资表")   '先确定区域工资表行列区域
  13.     LastRow = .[a65536].End(xlUp).Row
  14.     LastColumn = .[iv1].End(xlToLeft).Column
  15.     arr = .Range(.[a1], .Cells(LastRow, LastColumn)).Value
  16. End With

  17. Dim i As Long, m As Integer, brr()
  18. ReDim brr(1 To 3 * LastRow - 3, 1 To LastColumn)
  19. sh.Columns(1 & ":" & LastColumn).ColumnWidth = 10.63

  20. With sh    '把这个添加边框提出来,先在1到3行添加一个边框模板
  21.      .Range(.Cells(1, 1), .Cells(2, LastColumn)).Borders.LineStyle = xlContinuous   '设置整体边框的框线类型
  22.      .Range(.Cells(1, 1), .Cells(2, LastColumn)).Borders.ColorIndex = xlAutomatic   '设置整体边框的颜色
  23.      .Range(.Cells(1, 1), .Cells(2, LastColumn)).BorderAround Weight:=xlMedium   '设置外围边框的粗细
  24.      .Range(.Cells(1, 1), .Cells(3, LastColumn)).Copy .Range(.Cells(4, 1), .Cells(3 * LastRow - 3, LastColumn)) '然后在需要的区域,一次性添加完边框
  25. End With


  26. For i = 2 To LastRow
  27.     For m = 1 To LastColumn
  28.         brr(i * 3 - 5, m) = arr(1, m)
  29.         brr(i * 3 - 4, m) = arr(i, m)
  30. Next m, i
  31. sh.[a1].Resize(LastRow * 3 - 3, LastColumn) = brr   '在这里添加数据即可!
  32. End Sub
复制代码

[ 本帖最后由 unsamesky 于 2010-11-23 14:41 编辑 ]

22222.rar

57.2 KB, 下载次数: 69

TA的精华主题

TA的得分主题

发表于 2010-12-15 09:48 | 显示全部楼层
我想用VBA实现一个画边框的效果,.
效果描述: 1:就是当我任意选中三行以上的区域,再执行宏,就能实现外框是粗线,内框是细线.
                  2:第二行的下边框是粗线
不知道大家有明白我的意思没有,肯请老师们能指教.谢谢

TA的精华主题

TA的得分主题

发表于 2010-12-15 19:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
建议楼主使用录制宏的方法进行录制,然后再进行简单的修改就可以达到你的要求了!

原帖由 xhclzjj 于 2010-12-15 09:48 发表
我想用VBA实现一个画边框的效果,.
效果描述: 1:就是当我任意选中三行以上的区域,再执行宏,就能实现外框是粗线,内框是细线.
                  2:第二行的下边框是粗线
不知道大家有明白我的意思没有,肯请老师们能 ...

TA的精华主题

TA的得分主题

发表于 2012-7-31 16:29 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-27 06:38 , Processed in 0.045589 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表