Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 971|回复: 10

[已解决]帮忙写个 VBA 代码,用公式太麻烦了

[复制链接]
发表于 2023-2-21 21:44 | 显示全部楼层 |阅读模式
2学分
二月二,龙抬头!
老师们有空帮忙写个 VBA 代码,加个控件控制生成需要的数据,最好数据在一定范围内可以防重复。

谢谢!

最佳答案
2023-2-21 21:44
zames 发表于 2023-2-23 16:20
当 J 列的数量为空时,点击控件按钮,弹出窗口提示 “运行时错误 '1004' 应用程序定义或对象定义错误”
...


20230221.zip

396.68 KB, 下载次数: 11

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2023-2-21 21:44 | 显示全部楼层    本楼为最佳答案   
zames 发表于 2023-2-23 16:20
当 J 列的数量为空时,点击控件按钮,弹出窗口提示 “运行时错误 '1004' 应用程序定义或对象定义错误”
...


demo2.zip

18.84 KB, 下载次数: 9

回复

使用道具 举报

发表于 2023-2-21 23:38 | 显示全部楼层
是这个意思吗?
Sub 矩形圆角1_Click()
    Set d = CreateObject("scripting.dictionary")
    For i = 2 To [H1].End(xlDown).Row
        For j = 1 To Cells(i, "J").Value
            a1 = Mid("0123456789ABCDEF", Int(Rnd * 16 + 1), 1)
            a2 = Mid("0123456789ABCDEF", Int(Rnd * 16 + 1), 1)
            a3 = Mid("0123456789ABCDEF", Int(Rnd * 16 + 1), 1)
            If d.Count > 2000 Then d.RemoveAll
            Do While d.exists(a1 & a2 & a3)
                a1 = Mid("0123456789ABCDEF", Int(Rnd * 16 + 1), 1)
                a2 = Mid("0123456789ABCDEF", Int(Rnd * 16 + 1), 1)
                a3 = Mid("0123456789ABCDEF", Int(Rnd * 16 + 1), 1)
            Loop
            d(a1 & a2 & a3) = a1 & a2 & a3
            row1 = Application.CountA(Range("a:a")) + 1
            Cells(row1, "A") = Cells(i, "H")
            Cells(row1, "B") = Cells(i, "I") & a1 & a2 & a3
            Cells(row1, "C") = a1 & ".bmp"
            Cells(row1, "D") = a2 & ".bmp"
            Cells(row1, "E") = a3 & ".bmp"
        Next j
    Next i
    Set d = Nothing
End Sub

TEST.rar

15.13 KB, 下载次数: 6

回复

使用道具 举报

 楼主| 发表于 2023-2-22 11:09 | 显示全部楼层
本帖最后由 zames 于 2023-2-22 12:08 编辑
benhsu 发表于 2023-2-21 23:38
是这个意思吗?
Sub 矩形圆角1_Click()
    Set d = CreateObject("scripting.dictionary")

1、当单元格 J2:J23 无数值时,点击控件按钮后,应当清理 A:B 列之前所生成的数值。
2、多次点击控件按钮,在 A:B 列只能生成一次数值,而不是点击几次生成几次。就是当 J2 数值为 2 时,点击多少次控件按钮,都只会在 A:B 列对应生成 2 行数值,而不是点击几次就生成几次 2 的倍数。3、若 J2 列要求生成的数据非常多时,比如设置 100 ,则 A:B 列无法生成那么多数值。

谢谢!


回复

使用道具 举报

发表于 2023-2-23 15:19 | 显示全部楼层
祝順心,南無阿彌陀佛!

demo.zip

19.55 KB, 下载次数: 22

回复

使用道具 举报

 楼主| 发表于 2023-2-23 16:20 | 显示全部楼层
cutecpu 发表于 2023-2-23 15:19
祝順心,南無阿彌陀佛!

当 J 列的数量为空时,点击控件按钮,弹出窗口提示 “运行时错误 '1004' 应用程序定义或对象定义错误”

谢谢!
回复

使用道具 举报

 楼主| 发表于 2023-2-24 11:03 | 显示全部楼层

十分感谢,已经解决上面所述的问题。

表格完成后才发现,B 列数值中最后 3 位随机生成不重复的数据中,部分数值最后 3 位都是英文字母,这个数据不符合使用,有没有办法让这最后随机生成的 3 位数值中最多只能包含 1 位英文。即 "A B C D E F” 这六个英文在随机生成时最多只能在里面出现 1 个。如数值最后三位是这样的" 1A2 36E F85……”

麻烦老师了

点评

好喔,有開電腦時再幫您改喔~  发表于 2023-2-24 11:42
回复

使用道具 举报

 楼主| 发表于 2023-2-24 12:49 | 显示全部楼层
zames 发表于 2023-2-24 11:03
十分感谢,已经解决上面所述的问题。

表格完成后才发现,B 列数值中最后 3 位随机生成不重复的数据中 ...

好的。
回复

使用道具 举报

 楼主| 发表于 2023-2-24 16:50 | 显示全部楼层
本帖最后由 zames 于 2023-2-24 17:17 编辑
cutecpu 发表于 2023-2-23 15:19
祝順心,南無阿彌陀佛!

B 列数值中最后 3 位随机生成不重复的数据中,部分数值最后 3 位都是英文字母,这个数据不符合使用,有没有办法让这最后随机生成的 3 位数值中不能 3 位数都是英文,可以有 2 个英文或 1 个英文或都是阿拉伯数字。即 "A B C D E F” 这六个英文在随机生成时最多只能在里面出现 2 个,如“AB1 B2E CD5 6E8 88F 568 ……”。最后三位数不可以都是英文,如“BBC ABD CDF……”
那个控件按钮能不能改为点击比较立体的按钮,点击感觉会按压下去的感觉,那样比较好看

谢谢!

点评

三位都不是英文可以喔~ 按鈕立體的部份我就不會了 這幾天回老家沒電腦 過幾天再幫您喔~  发表于 2023-2-24 21:30
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-29 07:21 , Processed in 0.329515 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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