ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 自定义函数--提取单元格内多个被分开的数字

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-1 15:29 | 显示全部楼层
iris00 发表于 2019-11-1 15:10
请教:为什么我将代码复制过去,运行时提示缺少end sub.这是什么原因呀?

把附件上传,看看怎么回事

TA的精华主题

TA的得分主题

发表于 2019-11-1 15:42 | 显示全部楼层
难道是EXCEL版本问题?
微信图片_20191101153632.png

高亮显示.zip

25.36 KB, 下载次数: 11

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-1 16:05 | 显示全部楼层
iris00 发表于 2019-11-1 15:42
难道是EXCEL版本问题?

如下代码替换Sheet1模块里的代码
Private Sub ToggleButton1_Click()
    Dim JGD As Shape
    If Me.ToggleButton1.Caption = "聚光灯-已关" Then
        ToggleButton1.Caption = "聚光灯-已开"
    Else
        ToggleButton1.Caption = "聚光灯-已关"
        For Each JGD In ActiveSheet.Shapes
            If JGD.Name = "聚光灯-已开" Then JGD.Delete         '删除特定名称的图形
        Next
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     Dim JGD As Shape, lc!, hh!, Col
     If Sheet1.ToggleButton1.Caption = "聚光灯-已开" Then
         n = Target.Row: Col = Target.Column: lc = Target.Width: hg = Target.Height
         nn = Application.Max(n - 100, 1)
         hs = Application.Max(Col - 100, 1)
         On Error Resume Next
         ActiveSheet.Shapes("聚光灯-已开").Delete
         ActiveSheet.Shapes("聚光灯-已开").Delete
        ' For Each JGD In ActiveSheet.Shapes
         '    If JGD.Name = "聚光灯-已开" Then JGD.Delete         '删除特定名称的图形
        'Next
         With ActiveSheet.Shapes.AddShape(msoShapeRectangle, Cells(nn, Col).Left, Cells(nn, Col).Top, lc, hg * 200)
             .Line.Visible = msoFalse                '设置为无轮廓
            .Fill.Visible = msoTrue                 '设置填充(fill)颜色,如果=msofalse,则为无颜色填充
            .Fill.ForeColor.RGB = RGB(247, 17, 238) '设置颜色
            .Fill.Transparency = 0.6                '设置透明度,数字愈大透明度越高
            .Name = "聚光灯-已开"
         End With
         With ActiveSheet.Shapes.AddShape(msoShapeRectangle, Cells(n, hs).Left, Cells(n, 1).Top, lc * 200, hg) 'hh)
             .Line.Visible = msoFalse                '设置为无轮廓
            .Fill.Visible = msoTrue                 '设置填充(fill)颜色,如果=msofalse,则为无颜色填充
            .Fill.ForeColor.RGB = RGB(247, 17, 238) '设置颜色
            .Fill.Transparency = 0.6                '设置透明度,数字愈大透明度越高
            .Name = "聚光灯-已开"
         End With
        
     End If
End Sub

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-1 16:07 | 显示全部楼层
代码审核中,直接上传附件
高亮显示.zip (21.17 KB, 下载次数: 25)

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-11-1 16:24 | 显示全部楼层
请教,如果想提取第几个数字该怎样写呢。现在是放在一个单元格里面了

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-1 18:19 | 显示全部楼层
sunny_8848 发表于 2019-11-1 16:24
请教,如果想提取第几个数字该怎样写呢。现在是放在一个单元格里面了

没有理解您的问题。最好上传附件并且详细说明下

TA的精华主题

TA的得分主题

发表于 2019-11-1 19:19 | 显示全部楼层
我要按如图方式提取数字(其中小数点不是分隔符)
1.jpg

新建文件夹.rar (80.67 KB, 下载次数: 11)

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-1 20:01 | 显示全部楼层
sunny_8848 发表于 2019-11-1 19:19
我要按如图方式提取数字(其中小数点不是分隔符)

请参考
Function wei(t, x)
    With CreateObject("vbscript.regexp")
        .Pattern = "([1-9][0-9]*)(\.\d+)?"
        .Global = True
            Set mh = .Execute(t)
            str1 = ""
            For Each m In mh
                str1 = str1 & "," & m.Value
            Next
    End With
    num = Split(str1, ",")
    m = UBound(num)
    If x > m Then wei = "" Else wei = num(x)
End Function

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-1 20:03 | 显示全部楼层
sunny_8848 发表于 2019-11-1 19:19
我要按如图方式提取数字(其中小数点不是分隔符)

D1=wei($A1,COLUMN(A1))
右拉、下拉

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-11-2 08:13 | 显示全部楼层
YZC51 发表于 2019-11-1 20:03
D1=wei($A1,COLUMN(A1))
右拉、下拉

多谢帮忙,效果挺不错的
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 05:41 , Processed in 0.036456 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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