ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 关于EXCEL自动填充主序号和子序号,如何编写VBA

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-8-5 17:37 | 显示全部楼层 |阅读模式
本帖最后由 xiaotuding 于 2018-8-5 17:39 编辑

希望达成的效果:
1、C列填入内容后,如果点击A列,则生成如1、2、3......的序号,同时该行字体加粗,单元格填充如图的颜色,D、E、F、G单元格禁止填写内容,D、E、F单元格去除左右两侧的边框线;如果点击B列,则根据A列序号生成子序号,序号格式为1.1、1.2、1.3......

2、所有A列的主序号如1、2、3......等创建为一个组,B列的每组子序号自动创建为一组,新增序号根据此原则自动归入相应的组内

3、上一行内容填写完整(G列除外)后,自动插入下一行带边框的单元格

4、每一行只能生成一种序号,要么是主序号,要么是子序号1.1、1.2、1.3......生成哪一类序号则根据点击的是A列或B列来判断



Project Plan.rar (25.72 KB, 下载次数: 73)


头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2018-8-6 11:58 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-6 17:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢您提醒,可以简化下需求,解决第1和3的问题就可以了,其它是我完美癖的吹毛求疵,太复杂就放弃吧。烦请群里各位高手帮帮我,谢谢啦

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-6 17:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
重新简化了一下需求:

1、C列填入内容后,如果点击A列,则生成如1、2、3......的序号,同时该行字体加粗,D、E、F单元格去除左右两侧的边框线;如果点击B列,则根据A列序号生成相应的子序号,序号格式为1.1、1.2、1.3、......

2、上一行内容填写完后,自动插入下一行带边框的单元格

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-7 15:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
自己再顶一下,烦请群里各位高能大侠相助,成分感谢

TA的精华主题

TA的得分主题

发表于 2018-8-7 15:28 | 显示全部楼层
本帖最后由 莫名v微笑 于 2018-8-8 09:43 编辑
  1. Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  2. a = Application.count(Range("a:a"))
  3. r = Target.Row
  4. If Target.Column = 1 And Cells(Target.Row, 3) <> "" And Target = "" Then
  5. Target = a + 1: Target.Font.Bold = True: Range(Cells(r, 1), Cells(r, 7)).Interior.ColorIndex = 40
  6. End If
  7. b = Cells(Target.Row, 1).End(xlUp).Row
  8. If Target.Column = 2 And Cells(Target.Row, 3) <> "" And Target = "" And b <> 9 Then
  9. c = Cells(b, 1): d = Target.Row - b: Target = c & "." & d
  10. End If
  11. e = Sheets(1).UsedRange.Rows.Count
  12. If Cells(e, 2) <> "" And Cells(e, 3) <> "" And Cells(e, 4) <> "" And Cells(e, 5) <> "" And Cells(e, 6) <> "" Then
  13. Range(Cells(e + 1, 1), Cells(e + 1, 7)).Borders.LineStyle = xlContinuous
  14. Rows(e + 1).RowHeight = 20
  15. End If
  16. End Sub
复制代码

尝试写了个,你试试看。

TA的精华主题

TA的得分主题

发表于 2018-8-7 15:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
xiaotuding 发表于 2018-8-7 15:20
自己再顶一下,烦请群里各位高能大侠相助,成分感谢

'单元格格式未设置,自己修改

Option Explicit

Dim rowpos As Long

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 3 And Target.Row > 10 Then
    rowpos = Target.Row
  End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim i, t
  If Target.Column = 1 And rowpos > 10 Then
    If Len(Cells(rowpos, 3)) = 0 Then Exit Sub
    For i = rowpos - 1 To 10 Step -1
      If Len(Cells(i, 1)) > 0 And IsNumeric(Cells(i, 1)) Then
        Cells(rowpos, 1) = Cells(i, 1) + 1: Exit Sub
      End If
    Next
  End If
  If Target.Column = 2 And rowpos > 10 Then
    If Len(Cells(rowpos, 1)) Then Exit Sub
    If Len(Cells(rowpos, 3)) = 0 Or Len(Cells(rowpos, 2)) > 0 Then Exit Sub
    If Len(Cells(rowpos - 1, 2)) = 0 Then
      Cells(rowpos, 2) = Cells(rowpos - 1, 1) & "." & 1: Exit Sub
    End If
    For i = rowpos - 1 To 10 Step -1
      If InStr(Cells(i, 2), ".") Then
        t = Split(Cells(i, 2), ".")
        Cells(rowpos, 2) = t(0) & "." & Val(t(1)) + 1: Exit Sub
      End If
    Next
  End If
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-8 00:38 | 显示全部楼层
好的好的,谢谢两位的热心相助,小女子在此多谢,我先试一试

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-9 16:46 | 显示全部楼层
回复一下测试情况,“莫名v微笑” 给到的代码经测试有问题,举例说明:

1、同一行单元格点击A列和B列,都会自动填充序号。而不能如表中所显示的,一行只生成一种序号。希望的效果是,如果点击A列则自动填充主序号,但之后如果又点击B列则会生成子序号,同时A列主序号自动清除。

2、A列填充了3、4、5、6....的序号,如果清除已填充的序号4,再重新点击A列,就无法再自动显示序号4,而是填充为序号5。

3、A列填充了3、4、5、6....的序号,如果删除序号4、5所在的整行单元格,序号6所在的单元格不会自动更新为序号4
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-11 20:55 , Processed in 0.025004 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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