×
¥
查看详情
🔥 会员专享 文生文 教育

智能VBA初学者助手

👁️ 456 次查看
📅 Aug 5, 2025
💡 核心价值: 通过简单描述快速生成带详细注释的Excel VBA代码,帮助初学者学习和提升办公自动化效率。

🎯 可自定义参数(5个)

任务描述
任务描述,例如需要实现的Excel VBA功能
输出语言
VBA代码的注释语言,支持中文或英文
Excel版本
目标Excel版本,例如Office 2019、Office 365
使用高级功能
是否启用高级功能,例如表格事件绑定
性能优化
是否启用性能优化,例如减少循环次数

🎨 效果示例

{
"generatedCode": "Sub GenerateWeeklyReport()\n    ' 禁用屏幕刷新以提高性能\n    Application.ScreenUpdating = False\n    \n    ' 定义数据库连接和查询语句参数 (模拟从数据库提取数据)\n    ' 假设使用ADO连接到SQL数据库\n    Dim conn As Object ' ADO连接对象\n    Dim rs As Object ' 记录集对象\n    Dim sqlQuery As String ' SQL查询语句\n    Dim connectionString As String ' 连接字符串\n    \n    ' 初始化连接对象和SQL查询\n    Set conn = CreateObject(\"ADODB.Connection\")\n    Set rs = CreateObject(\"ADODB.Recordset\")\n    connectionString = \"Provider=SQLOLEDB;Data Source=YOUR_SERVER_NAME;\" & _\n                       \"Initial Catalog=YOUR_DATABASE_NAME;Integrated Security=SSPI;\"\n    sqlQuery = \"SELECT EmployeeName, TaskDescription, HoursWorked, TaskDate \" & _\n               \"FROM EmployeeTasks WHERE TaskDate BETWEEN CONVERT(date, GETDATE()-7) AND CONVERT(date, GETDATE())\"\n    \n    ' 打开数据库连接\n    On Error GoTo ErrorHandler\n    conn.Open connectionString\n    rs.Open sqlQuery, conn\n    \n    ' 将数据写入Excel表格\n    Dim ws As Worksheet\n    Set ws = ThisWorkbook.Sheets(\"WeeklyReport\") ' 假设目标工作表名称为\"WeeklyReport\"\n    ws.Cells.Clear ' 清除已有数据以确保干净的表格\n    \n    ' 写入表头\n    ws.Cells(1, 1).Value = \"员工姓名\"\n    ws.Cells(1, 2).Value = \"任务描述\"\n    ws.Cells(1, 3).Value = \"工时\"\n    ws.Cells(1, 4).Value = \"任务日期\"\n    ws.Rows(1).Font.Bold = True ' 加粗表头\n    \n    ' 将记录集数据写入工作表\n    Dim rowNum As Long\n    rowNum = 2 ' 从第二行开始写入数据\n    Do Until rs.EOF\n        ws.Cells(rowNum, 1).Value = rs.Fields(\"EmployeeName\").Value\n        ws.Cells(rowNum, 2).Value = rs.Fields(\"TaskDescription\").Value\n        ws.Cells(rowNum, 3).Value = rs.Fields(\"HoursWorked\").Value\n        ws.Cells(rowNum, 4).Value = rs.Fields(\"TaskDate\").Value\n        rowNum = rowNum + 1\n        rs.MoveNext\n    Loop\n    \n    ' 自动调整列宽\n    ws.Columns.AutoFit\n    \n    ' 恢复屏幕刷新\n    Application.ScreenUpdating = True\n    \n    ' 关闭数据库连接和记录集\n    rs.Close\n    conn.Close\n    Set rs = Nothing\n    Set conn = Nothing\n    \n    MsgBox \"工作周报表已生成!\", vbInformation\n    Exit Sub\n\nErrorHandler:\n    Application.ScreenUpdating = True\n    MsgBox \"发生错误: \" & Err.Description, vbCritical\n    ' 确保连接在错误后关闭\n    If Not rs Is Nothing Then If rs.State = 1 Then rs.Close\n    If Not conn Is Nothing Then If conn.State = 1 Then conn.Close\nEnd Sub",
"codeExplanation": "1. 代码首先禁用了屏幕刷新 (ScreenUpdating),以提高性能并避免屏幕闪烁。\n2. 初始化ADO对象 (conn 和 rs),用于连接数据库和执行SQL查询。假设数据库使用SQL Server,并使用Windows认证通过连接字符串连接到数据库。\n3. SQL查询提取了最近7天员工任务的数据,包括员工姓名、任务描述、工时和日期。\n4. 通过ADO对象打开数据库连接,并将提取到的数据写入工作表\"WeeklyReport\"。\n5. 清空工作表中的现有数据以确保整洁,并在第一行设置表头。\n6. 使用循环将记录集中的数据逐行写入工作表,从第二行开始。\n7. 写入数据后,自动调整列宽以便于查看。\n8. 所有操作完成后,恢复屏幕刷新并关闭数据库连接,释放资源。\n9. 错误处理部分确保即使出现错误,也能正确关闭相关对象并提示用户。\n10. 最后,弹出消息框通知用户周报表生成完成。",
"performanceTips": [
    "禁用屏幕刷新 (ScreenUpdating) 和事件触发 (EnableEvents),避免不必要的UI更新。",
    "在记录集循环中避免对单元格进行逐个操作,合并操作以减少对工作表的多次访问。",
    "使用数据库的日期函数 (如SQL Server的GETDATE) 进行日期计算,减少对Excel公式的依赖。",
    "限制每次检索的数据范围 (如添加WHERE条件),避免从数据库提取过多数据。",
    "在合理范围内调整自动列宽 (AutoFit),但尽量减少使用以节省性能。"
]
}
{
"generatedCode": "Sub FormatCells()\n    ' Define the range to be formatted\n    ' Replace \"A1:C10\" with your desired range\n    Dim targetRange As Range\n    Set targetRange = ThisWorkbook.Sheets(1).Range(\"A1:C10\")\n\n    ' Apply formatting to the range\n    With targetRange\n        .Font.Bold = True      ' Set font to bold\n        .HorizontalAlignment = xlCenter ' Center-align content horizontally\n        .VerticalAlignment = xlCenter   ' Center-align content vertically (if necessary for merged cells)\n    End With\nEnd Sub",
"codeExplanation": "1. The macro starts by defining a range to be formatted. The range (\"A1:C10\") can be customized as per user requirements.\n2. `Set targetRange = ThisWorkbook.Sheets(1).Range(\"A1:C10\")`: This sets the range of cells where formatting will be applied on Sheet 1 of the workbook.\n3. `With targetRange`: This block applies all formatting specified inside it to the range.\n    a. `.Font.Bold = True`: Makes text within the range bold.\n    b. `.HorizontalAlignment = xlCenter`: Horizontally centers the content in the range.\n    c. `.VerticalAlignment = xlCenter`: Vertically centers the content in the range. This is especially useful for merged cells.\n4. This simple structure ensures the macro is easy to read and edit for future adjustments.",
"performanceTips": [
    "If the range is large, consider disabling screen updating to improve performance by adding `Application.ScreenUpdating = False` at the beginning of the macro and `Application.ScreenUpdating = True` at the end.",
    "If the formatting applies to multiple ranges, process them in batches to avoid excessive memory usage.",
    "If the macro will be called repeatedly, test different methods for dynamic range selection instead of hardcoding the address (e.g., use `UsedRange` or a named range)."
  ]
}
{
"generatedCode": "Sub DataCleaningAndComparison()\n    Dim ws As Worksheet\n    Dim rngA As Range, rngB As Range, rngOutput As Range\n    Dim dict As Object\n    Dim cell As Range, key As Variant\n    \n    ' 提高性能:禁用屏幕刷新和计算。\n    Application.ScreenUpdating = False\n    Application.Calculation = xlCalculationManual\n\n    ' 定义当前工作表。\n    Set ws = ThisWorkbook.Worksheets(1) ' 根据需求指定工作表。\n\n    ' 定义两组数据的范围(修改为你的数据范围)。\n    Set rngA = ws.Range(\"A1:A100\")\n    Set rngB = ws.Range(\"B1:B100\")\n\n    ' 定义输出区域(清除旧数据)。\n    Set rngOutput = ws.Range(\"D1\")\n    rngOutput.CurrentRegion.Clear\n\n    ' 创建字典对象,用于存储和对比数据(去重)。\n    Set dict = CreateObject(\"Scripting.Dictionary\")\n\n    ' 遍历第一组数据,清洗并去重。\n    For Each cell In rngA\n        If Not IsEmpty(cell.Value) Then\n            key = Trim(cell.Value) ' 去除多余空格,标准化数据。\n            If Not dict.exists(key) Then\n                dict.Add key, \"In Group A\"\n            End If\n        End If\n    Next cell\n\n    ' 遍历第二组数据,执行清洗并与第一组对比。\n    For Each cell In rngB\n        If Not IsEmpty(cell.Value) Then\n            key = Trim(cell.Value)\n            If dict.exists(key) Then\n                dict(key) = \"In Both Groups\"\n            Else\n                dict.Add key, \"In Group B\"\n            End If\n        End If\n    Next cell\n\n    ' 输出对比结果。\n    Dim outputRow As Integer\n    outputRow = 1\n    For Each key In dict.keys\n        rngOutput.Cells(outputRow, 1).Value = key ' 输出键值(去重后的数据)。\n        rngOutput.Cells(outputRow, 2).Value = dict(key) ' 输出数据所属的组。\n        outputRow = outputRow + 1\n    Next key\n\n    ' 恢复性能选项。\n    Application.ScreenUpdating = True\n    Application.Calculation = xlCalculationAutomatic\n\nEnd Sub",
"codeExplanation": "1. 首先关闭屏幕刷新 (`ScreenUpdating`) 和自动计算 (`Calculation`),以提高代码执行性能。\n2. 使用 `Set` 方法定义数据范围 rngA 和 rngB 代表两组要清洗和对比的数据区域。输出区域 rngOutput 是清空旧数据后用于存储结果的区域。\n3. 通过创建字典 (`Scripting.Dictionary`) 实现高效的数据清洗和快速去重。字典支持唯一键值,这使得去重更加直观和简单。\n4. 遍历第一组数据,对每个值进行清洗(如去空白和冗余空格)后,对字典中的数据进行去重操作。\n5. 第二组数据在清洗后,与第一组数据在字典中对比。如果数据已存在则标记为 \"In Both Groups\",否则标记为只出现在第二组。\n6. 遍历字典,将数据键和值(数据内容及对比结果)逐行输出到指定区域。\n7. 在所有数据操作完成后,为避免因性能调整带来的影响,重新开启屏幕刷新和计算。\n8. 此外,所有的代码逻辑加入了详细中文注释,帮助初学者理解代码生成逻辑。",
"performanceTips": [
    "在数据清理和对比过程中,通过禁用屏幕刷新和自动计算(Application.ScreenUpdating 和 Application.Calculation)明显减少任务执行时间,尤其对大数据量操作更为有效。",
    "使用 Scripting.Dictionary 提供了高效的去重和数据存储能力,而不需要嵌套循环,从而降低了时间复杂度。",
    "在输出结果时,直接写入目标区域会比逐行选择和操作更高效。此外,清除输出区域时使用 CurrentRegion.Clear 可避免多余操作。"
]
}

示例详情

📖 如何使用

30秒出活:复制 → 粘贴 → 搞定
与其花几十分钟和AI聊天、试错,不如直接复制这些经过千人验证的模板,修改几个 {{变量}} 就能立刻获得专业级输出。省下来的时间,足够你轻松享受两杯咖啡!
加载中...
💬 不会填参数?让 AI 反过来问你
不确定变量该填什么?一键转为对话模式,AI 会像资深顾问一样逐步引导你,问几个问题就能自动生成完美匹配你需求的定制结果。零门槛,开口就行。
转为对话模式
🚀 告别复制粘贴,Chat 里直接调用
无需切换,输入 / 唤醒 8000+ 专家级提示词。 插件将全站提示词库深度集成于 Chat 输入框。基于当前对话语境,系统智能推荐最契合的 Prompt 并自动完成参数化,让海量资源触手可及,从此彻底告别"手动搬运"。
即将推出
🔌 接口一调,提示词自己会进化
手动跑一次还行,跑一百次呢?通过 API 接口动态注入变量,接入批量评价引擎,让程序自动迭代出更高质量的提示词方案。Prompt 会自己进化,你只管收结果。
发布 API
🤖 一键变成你的专属 Agent 应用
不想每次都配参数?把这条提示词直接发布成独立 Agent,内嵌图片生成、参数优化等工具,分享链接就能用。给团队或客户一个"开箱即用"的完整方案。
创建 Agent

✅ 特性总结

快速生成Excel VBA代码,为初学者迅速提供可执行的基础代码。
添加详细注释,解释每段代码的功能及逻辑,帮助用理解与学习。
支持多语言注释切换,轻松根据用户需要生成中文或英文解释。
根据描述智能适配Excel版本,确保生成的VBA代码兼容性强。
灵活启用高级功能,如事件绑定等,满足进阶办公需求。
智能分析任务需求,提供性能优化建议,帮助优化代码执行效率。
输出的代码逻辑清晰,通俗易懂,方便初学者快速上手掌握办公室自动化。
一键生成符合业务场景的VBA代码模板,节省重复编写时间。
内置学习支持,提供实用建议和学习技巧,辅助用户深入理解VBA编程。

🎯 解决的问题

为VBA初学者及办公人员提供一站式VBA代码生成辅助工具,用户只需通过简单描述,即可快速生成高质量、详细注释的Excel VBA代码,降低学习门槛,提升办公自动化效率,适配不同需求(如语言切换、高级功能、性能优化),帮助用户高效完成任务。

🕒 版本历史

当前版本
v2.1 2024-01-15
优化输出结构,增强情节连贯性
  • ✨ 新增章节节奏控制参数
  • 🔧 优化人物关系描述逻辑
  • 📝 改进主题深化引导语
  • 🎯 增强情节转折点设计
v2.0 2023-12-20
重构提示词架构,提升生成质量
  • 🚀 全新的提示词结构设计
  • 📊 增加输出格式化选项
  • 💡 优化角色塑造引导
v1.5 2023-11-10
修复已知问题,提升稳定性
  • 🐛 修复长文本处理bug
  • ⚡ 提升响应速度
v1.0 2023-10-01
首次发布
  • 🎉 初始版本上线
COMING SOON
版本历史追踪,即将启航
记录每一次提示词的进化与升级,敬请期待。

💬 用户评价

4.8
⭐⭐⭐⭐⭐
基于 28 条评价
5星
85%
4星
12%
3星
3%
👤
电商运营 - 张先生
⭐⭐⭐⭐⭐ 2025-01-15
双十一用这个提示词生成了20多张海报,效果非常好!点击率提升了35%,节省了大量设计时间。参数调整很灵活,能快速适配不同节日。
效果好 节省时间
👤
品牌设计师 - 李女士
⭐⭐⭐⭐⭐ 2025-01-10
作为设计师,这个提示词帮我快速生成创意方向,大大提升了工作效率。生成的海报氛围感很强,稍作调整就能直接使用。
创意好 专业
COMING SOON
用户评价与反馈系统,即将上线
倾听真实反馈,在这里留下您的使用心得,敬请期待。
加载中...