ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请老师看一下这段代码错在哪里?这是chatgpt写的。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-4-14 13:19 | 显示全部楼层 |阅读模式
这段代码是我要求chatGPt写的,要求用VBA代码在excel里画一朵梅花,它给我的代码在运行时弹出编译错误,请老师看一下,一块看看ChatGpt能写不能写代码?

Sub DrawPlumBlossom()
    Dim ws As Worksheet
    Dim centerX As Double
    Dim centerY As Double
    Dim petalSize As Double
    Dim angle As Double
    Dim i As Integer

    ' 设置工作表
    Set ws = ThisWorkbook.Sheets("Sheet1")

    ' 设置梅花的中心坐标和花瓣大小
    centerX = 5
    centerY = 5
    petalSize = 2

    ' 清除之前的绘图
    ws.Shapes.SelectAll
    Selection.Delete

    ' 循环绘制六个花瓣
    For i = 1 To 6
        ' 计算花瓣的角度
        angle = i * 60 * 3.14159 / 180

        ' 计算花瓣的坐标
        x1 = centerX + petalSize * Cos(angle)
        y1 = centerY + petalSize * Sin(angle)
        x2 = centerX + 2 * petalSize * Cos(angle)
        y2 = centerY + 2 * petalSize * Sin(angle)
        x3 = centerX + 3 * petalSize * Cos(angle + 30 * 3.14159 / 180)
        y3 = centerY + 3 * petalSize * Sin(angle + 30 * 3.14159 / 180)

        ' 绘制花瓣
        ws.Shapes.AddCurve(Array(x1, y1, x2, y2, x3, y3), msoEditingAuto, 0).Select
        Selection.ShapeRange.Line.Visible = msoFalse
        Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 192, 203) ' 设置花瓣的颜色
    Next i
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-14 17:44 | 显示全部楼层
为了不让沉底,我自己给自己回复一下。

运行后就是弹出这个错误。

运行后就是弹出这个错误。

TA的精华主题

TA的得分主题

发表于 2023-4-15 08:41 | 显示全部楼层
Shapes.AddCurve 只有一个二维数组参数 ,下面是官方文档的说明
  1. 由指定曲线的顶点和控制点的坐标对组成的数组。 指定的第一个点是起始顶点,接下来的两个点是第一个贝塞尔段的控制点。 该曲线每增加一条线段,就要为其指定一个顶点和两个控制点。
  2. 指定的最后一个点是曲线的结束顶点。 请注意,必须指定的点数始终为 3n + 1,其中 n 为曲线的线段个数。
  3. Dim pts(1 To 7, 1 To 2) As Single
  4. pts(1, 1) = 0
  5. pts(1, 2) = 0
  6. pts(2, 1) = 72
  7. pts(2, 2) = 72
  8. pts(3, 1) = 100
  9. pts(3, 2) = 40
  10. pts(4, 1) = 20
  11. pts(4, 2) = 50
  12. pts(5, 1) = 90
  13. pts(5, 2) = 120
  14. pts(6, 1) = 60
  15. pts(6, 2) = 30
  16. pts(7, 1) = 150
  17. pts(7, 2) = 90
  18. Set myDocument = Worksheets(1)
  19. myDocument.Shapes.AddCurve SafeArrayOfPoints:=pts
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-21 22:04 , Processed in 0.033546 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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