ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-11-21 18:18 | 显示全部楼层 |阅读模式
增加新行(新东西,新数据)向下填充不加边框了

1:问题(附件:增加行边框不加了)....



2:问题与第一个问题相似(附件:有的行不加加框了)



具体看附件 麻烦大家看看了。。。。 是哪里出错了。



期待大家帮我改下代码能否进行解决下...,谢谢。

[ 本帖最后由 走自己的路 于 2010-11-21 18:23 编辑 ]
222.jpg
333.jpg

有的行不加加框了.rar

141.41 KB, 下载次数: 68

增加行边框不加.rar

47.48 KB, 下载次数: 57

TA的精华主题

TA的得分主题

发表于 2010-11-21 18:45 | 显示全部楼层
第二个附件:
1、把第一、二行的边框设置完全。
2、代码中有三处的“11”列,要改为“17”列。类似这里.Cells(TempRow, 11),改为.Cells(TempRow, 17)。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-11-21 18:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 2楼 excelflower 的帖子

麻烦老师帮忙改下,上传两个问题的附件可以吗? 谢谢,因为还是有点不理解,有解决完后的附件更比较容易理解些.

难道第1个问题 不用改vba代码吗? 我看了工资表的原文件 并不缺边框阿?

如图
999.jpg
888.jpg

TA的精华主题

TA的得分主题

发表于 2010-11-21 18:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
第一个附件:是你的原表中,缺边框。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-11-21 19:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 4楼 excelflower 的帖子

从头新建一个  结果还是那样。

边框外边框和内边框都加了

03版本

期待2个问题的解决

[ 本帖最后由 走自己的路 于 2010-11-21 19:01 编辑 ]

重新来个,试试.rar

11.83 KB, 下载次数: 89

TA的精华主题

TA的得分主题

发表于 2010-11-21 19:15 | 显示全部楼层
现在可以动态增加了边框了

增加行边框不加.rar

49.5 KB, 下载次数: 166

TA的精华主题

TA的得分主题

发表于 2010-11-21 19:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 走自己的路 于 2010-11-21 19:00 发表
从头新建一个  结果还是那样。

边框外边框和内边框都加了

03版本

期待2个问题的解决

我这里好用。

Book4.rar

18.23 KB, 下载次数: 82

TA的精华主题

TA的得分主题

发表于 2010-11-21 21:14 | 显示全部楼层
换一种方式,避开copy,工资表什么样的格式也不受影响。
  1. Public Function SheetExist(ByVal ShName As String) As Boolean
  2. Dim WSh As Worksheet

  3. SheetExist = False

  4. For Each WSh In ThisWorkbook.Worksheets
  5.     If WSh.Name = ShName Then
  6.         SheetExist = True
  7.         Exit For
  8.     End If
  9. Next WSh

  10. End Function

  11. Public Sub CreateSalarySheet()
  12. Dim LastRow As Long, TempRow As Long
  13. Dim i As Long
  14. Dim arr1, arr2
  15. Dim rng As Range

  16. With Worksheets("工资表")
  17.     LastRow = .Cells(65536, 2).End(xlUp).Row
  18.     arr1 = .Range("a1").Resize(1, 11).Value
  19.     arr2 = .Range("a2").Resize(LastRow - 1, 11).Value
  20. End With

  21. If SheetExist("工资条") = False Then
  22.     ThisWorkbook.Worksheets().Add.Name = "工资条"
  23.     Sheets("工资条").Range("a1").Resize(1, 11).ColumnWidth = 10.63
  24. Else
  25.     Sheets("工资条").Range("a1").Resize(2000, 11).Clear
  26. End If
  27.    
  28. TempRow = 1

  29. For i = 1 To LastRow - 1
  30.     With Worksheets("工资条")
  31.         Set rng = .Cells(TempRow, 1).Resize(2, 11)
  32.         With rng
  33.             .Cells(1, 1).Resize(1, 11) = arr1 '工资条目
  34.             .Cells(2, 1).Resize(1, 11) = WorksheetFunction.Index(arr2, i, 0) '工资条内容
  35.             '以下是设置每一个工资条的边框
  36.             .Borders(xlEdgeLeft).LineStyle = xlContinuous
  37.             .Borders(xlEdgeLeft).ColorIndex = xlAutomatic
  38.             .Borders(xlEdgeLeft).Weight = xlMedium
  39.             
  40.             .Borders(xlEdgeTop).LineStyle = xlContinuous
  41.             .Borders(xlEdgeTop).ColorIndex = xlAutomatic
  42.             .Borders(xlEdgeTop).Weight = xlMedium
  43.             
  44.             .Borders(xlEdgeBottom).LineStyle = xlContinuous
  45.             .Borders(xlEdgeBottom).ColorIndex = xlAutomatic
  46.             .Borders(xlEdgeBottom).Weight = xlMedium
  47.             
  48.             .Borders(xlEdgeRight).LineStyle = xlContinuous
  49.             .Borders(xlEdgeRight).ColorIndex = xlAutomatic
  50.             .Borders(xlEdgeRight).Weight = xlMedium
  51.             
  52.             .Borders(xlInsideVertical).LineStyle = xlContinuous
  53.             .Borders(xlInsideVertical).ColorIndex = xlAutomatic
  54.             .Borders(xlInsideVertical).Weight = xlThin
  55.             
  56.             .Borders(xlInsideHorizontal).LineStyle = xlContinuous
  57.             .Borders(xlInsideHorizontal).ColorIndex = xlAutomatic
  58.             .Borders(xlInsideHorizontal).Weight = xlThin
  59.         End With
  60.     End With
  61.     TempRow = TempRow + 3 '下一位员工
  62. Next i


  63. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2010-11-21 22:01 | 显示全部楼层
对不起,今天下午在家忙别的事情去了。现在才有空!

文件我已经改好了。
1。只要你先在“工资表”内编辑好数据,然后直接点击“创建工资条”按钮,它就会自动查找第一行有多少列,再然后自动创建“工资条”这个工作表并自动格式化相应数量的列。
2。如果你重新编辑了“工资表”这个工作表,只要再次点击“创建工资条”按钮,它就会在原有的“工资条”这个工作表的基础上重新排版。一旦你发现不是你想要的格式,只要手动将“工资条”这个工作表删除,然后再次点击“创建工资条”按钮就行了。
祝你好运!但愿这能够给你帮助!

陆召龙

2010年 11月 21日

工资表.rar

14.86 KB, 下载次数: 97

TA的精华主题

TA的得分主题

发表于 2010-11-21 22:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
建议将设置边框的18句代码改成如下:
.Borders.LineStyle = xlContinuous   '设置整体边框的框线类型
.Borders.ColorIndex = xlAutomatic   '设置整体边框的颜色
.BorderAround Weight:=xlMedium   '设置外围边框的粗细

先用Borders设置全体边框,然后用BorderAround设置外围边框。

测试:

Public Sub CreateSalarySheet()
Dim LastRow As Long, TempRow As Long
Dim LastColumn As Integer

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

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

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

Dim i As Long, m As Integer, brr()
ReDim brr(1 To 3 * LastRow - 3, 1 To LastColumn)
sh.Columns(1 & ":" & LastColumn).ColumnWidth = 10.63
For i = 2 To LastRow
    For m = 1 To LastColumn
        brr(i * 3 - 5, m) = arr(1, m)
        brr(i * 3 - 4, m) = arr(i, m)
    Next
    With sh.Range(Cells(i * 3 - 5, 1), Cells(i * 3 - 4, LastColumn))
         .Borders.LineStyle = xlContinuous   '设置整体边框的框线类型
         .Borders.ColorIndex = xlAutomatic   '设置整体边框的颜色
         .BorderAround Weight:=xlMedium   '设置外围边框的粗细
    End With
Next
sh.[a1].Resize(LastRow * 3 - 3, LastColumn) = brr
End Sub

[ 本帖最后由 unsamesky 于 2010-11-21 22:44 编辑 ]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-27 04:31 , Processed in 0.052092 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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