【问题标题】:How to get started with Visual Basic for Applications? [closed]如何开始使用 Visual Basic for Applications? [关闭]
【发布时间】:2011-04-30 13:38:17
【问题描述】:

我对本网站首页上显示的丰富知识有点害怕,但它让我希望我正在与合适的人交谈。今天我和我们的一位程序员的经历很糟糕,我希望你能提供一些建议。

我是一名办公室管理员(主要是文员),今天我们在 Microsoft Excel 中的一个宏坏了(如果这个描述让我听起来像一个“愚蠢的用户”,我深表歉意)。我们的经理打电话给我们的 IT 部门,他们派了 2 个程序员。第一个人很好,问我是否有兴趣看他解决问题 - 但第二个人说“她只是文职人员,她永远不会得到它。”

是的,这很痛苦——但长话短说,我问我丈夫(他是一个“perl”程序员)我可以做些什么来向这些人展示我是由什么组成的,他推荐了一个名为“VBA”,因为我经常使用 Microsoft Office。他不太确定“VBA”是否正确,所以他建议我加入这个网站上的社区(他说他在这里找到了很多问题的答案)。

我在谷歌上研究了“VBA”,但实际上有成千上万的结果。我只是希望能够为 Microsoft Office 产品录制和编辑宏,并且可能足以向那个程序员表明我不仅仅是一个“愚蠢的女性管理员”。请各位专业人士给我您对以下项目的建议吗?

  1. “VBA”真的是我在寻找创建宏和自动化的东西吗?
  2. 如果不是“VBA”,什么是更合适的起点?
  3. 有课程的好书或网站?
  4. 您认为还有什么有用的吗?他们是否提供这样的大学课程?

【问题讨论】:

  • 这不应该在programmers.stackexchange.com上
  • 你丈夫给了你不好的建议,他应该更清楚。您的问题是工作场所行为之一(不是您的行为;尼安德特人 IT 工作者的行为)。不管你学了多少 VBA,你都不会那样解决问题。但是,为了您自己的利益,请随意学习 VBA,因为它对您很有用。
  • 旁注:很难找到比 VBA 学习编程的最差语言。它充满了不一致的行为、糟糕的错误报告、糟糕的 IDE,以及完成每项任务的太多方法。我不是说你不能这样做,我是说这会很痛苦,所以请不要这样做来向混蛋证明什么。
  • 旁注:如果您想自动化 Office 的某些部分并且您只是一个“愚蠢的管理员”,那么 VBA 很可能是您唯一可用的工具。如果 VBA 是您可以使用的唯一语言,那么与任何其他语言相比,它的缺陷都无关紧要
  • @Andrew 学习 VBA 可能有助于解决工作空间问题,这似乎是合理的 :-)

标签: vba


【解决方案1】:

VBA 代表 Visual Basic for Applications。我建议阅读上面的Wikipedia article,然后查看一些视频教程,例如this one。当您想了解以前从未接触过的东西时,我也喜欢"For Dummies" 系列。当您有具体问题时,您可以在此网站上发布。

【讨论】:

    【解决方案2】:

    VBA (Visual Basic for Application) 是您正在看的,如果您对宏感兴趣...

    在我看来,如果你对 Ms-Office 有良好的经验,理解起来会容易得多,但要掌握它,你可能需要一些编程技能。

    简单的学习方法是从问题开始。手头有问题,尝试记录宏以自动执行任务...然后您可以查看 Ms-Office 套件的 Visual Basic 编辑器中记录的内容...

    尝试阅读并理解作为对您的操作的响应而生成的每一行代码...起初一切都是希腊语和拉丁语...但是如果您继续这样做,您很快就会很容易理解时间...

    然后你就可以搜索素材了,所有这些搜索结果对你来说都是很有意义的。

    玩得开心..

    【讨论】:

      【解决方案3】:
      1. 是的。 VBA 代表Visual Basic For Applications
      2. 如果您有兴趣学习如何自动化办公应用程序,VBA 就是您想要的。
      3. 我推荐一本书John Walkenbach。特别是使用 VBA 进行超级编程。
      4. 不知道大学课程,但您可能不需要:我很确定 Power Programming 假定编程经验为零。 (但我已经很久没有读过了。)

      请记住,您可能需要一些时间才能掌握足够的概念以打动您的同事。祝你好运。请记住,总是这样的混蛋。不要让他们接近你。 :)

      【讨论】:

        【解决方案4】:

        回答您的问题...

        1. VBA 是用于驱动办公自动化的语言。正如 Jordan 所说,它代表 Visual Basic (for) Applications
        2. 如果您只想给办公室开发者留下深刻印象,VBA 是一个合适的起点。如果你真的想学习如何编程(就像你丈夫那样),那就开始学习另一种叫做 C++ 的语言,但要注意……它很忙。我建议你在谷歌上搜索“开始使用 VBA”或“初学者的 VBA”等短语。您会发现一些有用的教程
        3. 与其试图找到一本书并全部学习,不如给自己设置一个任务,例如“创建一个宏,该宏将查找电子表格中包含我的名字的所有单元格,并将它们替换为“我赢了”。当您尝试这样做时,您会迅速提出更具体的问题
        4. 提供课程,大多数 Excel 课程和其他办公课程将提供宏编程的高级部分
        5. 提出具体问题。与其问“我如何编写这个程序”,不如问“我如何在电子表格中找到特定的单元格”。这样你会得到更好的回应

        【讨论】:

          【解决方案5】:

          请注意,VBA 有多种样式,因为 Excel/VBA 中的代码看起来与 Access/VBA 中的代码不同。原因是用法不同(单元格与数据库)。查看vb-helper 获取书籍、链接和代码。

          【讨论】:

            【解决方案6】:

            Jordan 的回答很好,但您的问题比您是否了解 VBA 更深入。基本上,你有粗鲁的同事,如果你希望给他们留下深刻印象,成为他们高技能领域的新手不太可能有帮助。

            处理这类事情的更好方法 (IMO) 是告诉粗鲁的人“现在离开我的办公室 [/cubicle/whatever]。不要讨论”,然后与他的老板谈谈他如何互动和他的同事。

            如果他的老板不能给你一个满意的答复,那就跟他的老板商量吧。等等,直到你找到首席执行官,如果这就是它所需要的。

            如果你的指挥链上没有人认为你描述的 #2 程序员的行为是一个问题,你必须考虑你工作的公司是否值得你的特定技能。

            如果你认为你没有为公司带来任何特别有价值的技能,那么你可能不应该太担心其他人是否尊重你,尽管(a)你仍然不应该采取您所描述的虐待行为和 (b) 您扩展技能的想法令人钦佩。

            ...但是,如果您不是“天生的程序员”,请不要试图将您的圆钉强行插入方孔。

            如果是我,我会专注于成为任何人见过的最出色的办公室管理员。哦,另一个策略:如果#2 的老板没有给你满意的答复,请让你的老板跟他一起解决。说明你不认为人们应该在文明社会中遭受这种行为。同样,如果他不接受您的投诉,您必须决定是否要为那种公司工作。

            祝你好运!

            让我们 cmets 让我们知道结果如何。

            【讨论】:

            • +1 认识到学习一点点 VBA 无济于事;实际上,它会使情况变得更糟。如果您想为自己的利益学习 VBA,那就去吧。但不要因为这个问题中所述的原因而这样做。
            • +1 我同意学习 VBA 对他人的不良行为没有帮助,甚至可能会激怒它。为什么有人必须为别人的糟糕社交能力而有所作为?如果你想自动化你的一些工作并且你发现编程很有趣,你可以自己学习 VBA。否则,做你自己,专注于你的长处,了解自己,从而创造自尊。每个人都可以成为各自领域的专家。
            【解决方案7】:

            实际上,我是通过在 Excel 中记录宏并查看记录器创建的代码来开始编程的。找出一个简单的任务,然后录制一个宏。在 Excel 2007 中录制宏可以在最右侧宏按钮下的视图选项卡下找到。我发现的第一个任务是使用自动过滤器过滤几行数据,然后打印过滤后的部分。打印后,我删除过滤器并选择单元格 A1。

            在录制宏之前,请按顺序计算鼠标的每次点击。每次单击或键入宏都会记录它。因此,通过排练宏来减少记录的喋喋不休的代码。你甚至可以手写出一个像百老汇戏剧那样的剧本。不用担心录制需要多长时间。录音机没有时间概念。为了更好地理解 VBA,请多次录制宏。额外点击一下,看看它做了什么。比较每个宏中的代码。要访问代码,请使用上面提到的相同按钮查看宏。选择宏并进行编辑。当您觉得冒险时在编辑器中修改代码。始终记录并在副本上播放不是真实的文件。这样,如果文件搞砸了,您可以将其删除。仅供参考 - 宏的停止按钮通常位于 Excel 窗口的左下角。

            快乐学习, --J曼

            【讨论】:

              【解决方案8】:

              上述文章中提到的许多有用资源。是的! VBA 是您可以实际编写宏逻辑的东西。我只想添加我的一篇文章about MS Word/Excel macros。那里提到了一些基本和棘手的教程。

              【讨论】:

                【解决方案9】:

                我想我会分享我如何在 Excel(主要是)和 Access 中学习 VBA 宏的经验。

                我需要在 Excel 中自动执行很多任务,而且我对录制宏了如指掌。您可以从 Excel 2003 的工具|宏菜单中录制宏(我不确定 2007/2010 中的宏)。

                然后我决定我需要稍微改变它们,所以我想我应该看看记录的代码。按 Alt-F11 将带您进入 VBA 集成开发环境 (IDE)。然后,您可以查看已录制的宏并了解它们的作用。

                然后我会稍微编辑它们,看看发生了什么。如果我需要做某事但我不确定如何做,我会搜索帮助或谷歌并在整个网络上找到很好的答案。

                我现在是一名 VBA 开发人员,但我经常还有一些东西需要找出来。在计算机和 Office 应用程序(尤其是 Excel)方面拥有深厚的背景会有所帮助。有一个做 Perl 的丈夫意味着你可以向他询问一般的编程问题,比如语法和变量以及可能需要额外解释的编程概念。我之前一直在编程,所以这些概念对我来说并不新鲜。

                祝你好运,记得在 Stack Overflow 上提出大量问题,您很快就会成为专业人士。

                【讨论】:

                  【解决方案10】:

                  这里有许多对 VBA 有用的资源,但最有用的一点是,当您在 Excel 中打开宏记录器时,创建的宏是 VBA 代码。 Excel 非常庞大,尝试学习 VBA 的所有细微差别将需要相当长的时间,OTOH 录制宏需要几秒钟,您将快速了解该语言的工作原理。

                  【讨论】:

                    【解决方案11】:

                    您最好获得 MS Office 的副本并开始使用 MS Excel。 MS Excel 和 MS Word 允许您使用 VBA 管理电子表格和文档。

                    打开 MS Excel 并在录制宏的同时执行所需的任务。宏是开始学习 VBA 的好地方。在后台,所有这些宏都以 VBA 格式存储。您可以在各种日常任务中记录尽可能多的宏。因此,您将更有效地通过 MS Excel 完成任务,并且您将了解有关宏和 VBA 的更多信息。你很快就会学会修改这个宏以获得更好的结果。

                    【讨论】:

                      【解决方案12】:

                      如果您对 VBA 相当精通,则不必为这些问题致电 IT。这可能违反贵公司的政策,但我会把这个道德困境留给你。如果我想学习VBA,我会按顺序学习这三本书

                      VBA for Excel for Dummies (Walkenbach)
                      Power Programming for Excel VBA (Walkenbach)
                      Professional Excel Development (Bullen, Bovey, et al)
                      

                      在进行这项研究的同时,您需要开始解决实际问题。转到 social.msdn.microsoft.com 并开始阅读 VBA 论坛。尽可能回答任何问题。那些你不能的,等待其他人回答然后重现问题和解决方案,这样你就知道了。按照 vba 标签对 stackoverflow 问题执行相同的操作。如果有任何问题看起来太复杂,请跳过并转到下一个问题。

                      阅读 Excel VBA 博客http://www.dailydoseofexcel.com/dicks-blogroll/ 肯定以http://datapigtechnologies.com/blog/http://blog.contextures.com/ 开头。它们不仅是 VBA,而且写得非常好。

                      接下来会发生什么:在 3-6 个月内,您将发现一个全新的世界。您将为自己和您的同事编写简单的宏,从而消除您一天中的一些苦差事。您将开始寻找可以通过简单代码消除的浪费过程。在 6-12 个月内,您将变得相当熟练。您不需要 IT 来为您解决小问题。您将成为办公室中的首选 Excel 人员(学习 VBA 将使您在 Excel 方面做得更好)。您将在这里和 msdn 论坛上帮助成千上万的人,同时帮助自己。

                      2 年后,您可能会开始被 MS 和社区认可为专家。您会厌倦在论坛上一遍又一遍地回答相同的问题,因此您将创建一个博客并将人们引导到那里。你会和你的丈夫争论 VBA 是否是一种“真正的”语言,但他会为你所取得的成就而暗自为你感到骄傲。 5 年后,您将与人合着一本 Excel 书籍,辞去工作成为 Excel 顾问,并学习 C#。当然是 YMMV。

                      【讨论】:

                      • 这是迄今为止对这个问题最相关的答案:“如果你相当精通 VBA,你就不必为这些事情打电话给 IT。”
                      【解决方案13】:

                      很好的问题!

                      VBA代表Visual Basic for Applications,是Office自带的宏/自动化工具(你在帖子里说的宏都是用VBA写的)。

                      VBA 听起来很完美:

                      • VBA 面向非技术人员,因此设计为宽容且易于上手。
                      • Google 包含有关该主题的大量信息,所有目标人群都在您的情况下(没有技术背景但只想制作一个可以帮助他们的 Office 宏的人)
                      • 每天使用 Office 将使您有机会使用和练习所学知识。
                      • VBA 具有出色的宏录制功能,非常有用(尤其是在您尝试学习 VBA 时)

                      就像我说的,谷歌有大量关于这个主题的信息和介绍性文章(例如Getting Started Using VBA,选择一个好看的例子)。我建议通读其中一个以获得快速概览,然后试试看你能做什么:

                      • 使用宏记录器!如果您不知道如何做某事,那么只需记录您正在做的事情的宏,看看您是否可以从它生成的代码中弄清楚如何做。
                      • 给自己解决问题。
                      • 在这里提问! :-)

                      另外,很多地方都会提供我绝对推荐的 VBA 课程 - Google 上的指南非常适合向您展示语法以及如何执行某些操作(例如如何选择某个单元格,或如何执行循环),但是它们不会那么擅长教授编程的问题解决方面 - 为此你真的需要向一个人学习,这是一个课程将非常有帮助的地方。

                      最后一点,我建议不要尝试理解其他人编写的宏(例如您在问题中提到的宏) - 理解代码比编写代码要困难得多,除非这些程序员的编码技能诸如他们的社交技能之类的东西可能不是您想学习的代码...

                      祝你好运!

                      【讨论】:

                        【解决方案14】:

                        大家的cmet都很棒,我想说一点。

                        VBA 就像一种入门药物。 ASP classic 和 VB6 具有几乎相同的语法。我已经将代码从一个移植到另一个,改动非常小。

                        VB.NET 有类似的语法。这意味着通过学习 VBA,您不仅可以学习 VBA,还可以继续利用这些技能来做比您想象的更多的事情。您甚至可能了解到您对编程有着天生的亲和力,并将其作为职业来追求。

                        谁知道呢,有一天你可能会成为粗鲁的程序员的老板。那将是甜蜜的讽刺。

                        【讨论】:

                        • VBA 是我学习的第一门语言,让我迷上了编程;现在我是一名开发人员
                        • 我从 Radio Shack 学会了在彩色计算机 2 上编程。但是,我在 VBA 中学习了事件驱动编程。我做了九年的开发人员。现在,我是一名 DBA。
                        猜你喜欢
                        • 1970-01-01
                        • 2013-03-29
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        相关资源
                        最近更新 更多