• 締切済み

プログラミング言語について

宜しくお願いいたします。 エクセルのマクロを勉強したいと思っております。 その後、いろいろとプログラミング言語についても勉強したいのですが マクロを勉強することによって、その他のプログラミング言語の理解も早まりますか?

みんなの回答

回答No.6

#2の回答者です。 私は、VBAをもうやっているわけではないので、ここでは、たまに書く程度になってしまいました。私は、残念ながら、かつての「VBAマニア」だったと思いますが、「オタク」ではありません。「マニア」は過去にこだわるが、「オタク」は未来を気にする、と言います。モーグの掲示板で書いている人の中には、2~3年でプロ級になり、Excel VBAのシステム開発で、ひとつ数百万円を取れる人もいます。Excel VBAでは、テッペンまで上り詰めた人だと思います。そういう人は、何でしょうね。 改めて書いたのは、みなさんのような常識論ではなく、あくまでも、経験論で、プログラミング言語を学ぶという前提です。Excel VBAは通過点だという人に対するもので、それ以上の他意は私にはありません。 ここで、「アルゴリズム」という言葉が出てきましたので、私は、数日、いろいろなVB系のテキストを取り出して探してみましたが、インデックスには、そのような単語は出てきません。もちろん、VBで、河西朝雄さんの書籍で「アルゴリズム」を勉強したことはありますが、VBAでは、ほとんど使わないのではないでしょうか。「アルゴリズム」が、プログラミング上で、手順ややり方という意味はあるけれども、VBAでは、使われない言葉だと思います。アルゴリズムというと、真っ先に、バブル・ソートを思い浮かべるはずですが、言うほどには使われませんし、特に必要ではありません。 VBAでは、だいたい「構文」を覚えれば十分だと思います。それ以上になれば「構造化」ということも出てきますが、Excel VBAで、そこまで考える必要はないと思います。 Excelを使いこなしたいなら、VBAなどは忘れて、Excelの使い方を覚えることですね。Excel の上級レベルは、Excel上のVBAよりも難しい部分があります。ほとんどの人は、Excelの使いこなしは、中途半端に終わっているはずです。Excel VBAが出来ると言っても、会社などでは、ほとんど評価されません。 VBAには、スプレッドシートの基本的なことだけで、後は特に不要だと思います。アプリケーションとVBAは別のソフトと思ったほうがよいでしょう。 あくまでもVBAを言語として、早く覚えるには、Excelの使いこなしは不要で、むしろ、基本の構文や文法を優先して覚えていくことです。その方がずっと早く覚えられます。そうして、オブジェクトという、英単語で言えば、基本動詞のような、いろんな意味を持つ単語を、VBAのコードを書きながら、身につけていくわけです。 それと、もし先のことを考えるなら、Excel VBAはあまり深入りしないことだと思います。もう、今からの人たちには、とても、上級テクニックの資料は手に入らないし、今後、Microsoftのことだから、いつ終わるともしれません。散々、VBAはなくなると言われてから久しいのです。Microsoft系は、たかが、VBAでも、上を目指せば馬鹿馬鹿しいほどお金が掛かります。 VBAでは、よほどの才能があるならともかく、他人が作ったものを、真似するしかなく、自分の知恵や努力だけでは大したものはできません。プログラミングの才能などいらないと思います。もしこだわるなら、これだと思った他人の書いたコードを記録し、実際に自分で、後で試して検討してみることと、美しくコードを書くことだけです。美しく書くというのは「記法」といって、書き方のルールがあります。それを無視した人は難しいです。なお、シモニーのハンガリアン記法は、今はあまり流行りません。 私は、VB6 やVB.Net をやりましたが、基本的なVBAというならともかく、Excel VBAは、とても構造的に煩雑で不完全です。三重構造(旧表計算仕様--R1C1ベース,Ver.4マクロ関数,VB6)と言ってよいと思います。VBAは、ところどころで制作上で後付けの修正箇所がありますが、それでも Excelのスプレッドシート側の操作が完全には出来ませんので、古い技術が必要になることがあります。それだけ努力して、Excel VBAを覚えても、Word VBAさえも、思うようにならないはずです。 それと、理由はともかく、何でもかんでもVBAにすることは悪くないと思います。数多く、コードを作ることだと思います。一番、勉強になるのは、基本関数を実現してみることです。その中でもSUM関数は代表的です。 それらが、仕事上で使うかどうかは別問題です。仮にこれは良いと思っても、業務に使えるものかどうかは、日にちと共に淘汰されていくはずです。「Excelレガシー」といわれ、いわゆる非定型業務のアプリケーションとして存在しているものは、ほかの誰も修正できないので、無用の長物になってしまいます。 ともかく、VBAをマスターしたいなら、基本的に、ひたすらコードを書いて実行することです。あるプログラムのインストラクターは、一つの段階に達するには、いろんなパターンのコードを500個書けと言われます。まずは、きちんとテキストを使って、システマチックに、ひと通り、全部やり残しを作らないことですね。

回答No.5

素人であり、まったく本格的なプログラマではありませんが、ちょっとはいじったことのある者として、一言。 他言語の習得にも何かしら役に立つでしょうし、コンピュータというもの自体に対する理解も深まると思いますので、勉強されるのはたいへん結構なことです。 ただマクロに関心を寄せられている方を拝見していていつも気になるのは、No.4 さんもおっしゃっていますが、何でもかんでもマクロで行おうとしてしまう方がいらっしゃるということです。マクロ化することの意義というのは、●人間には不可能と思えるほど超大量の処理、●頻繁に実行する同一処理の自動化、●時間の節約、●人為的エラーの最小化、●マクロでなければ本来的に不可能な処理、などを実現するためだと言えるでしょう。 つまり、Excel というソフトを手作業などで十分に活用している中で、ちょっと合理化したい部分が出てきたら、そこをマクロ化するという運用方針がお勧めです。換言すれば、Excel の一般機能だけでもできることは、結構たくさんあるということです。私も仕事で Excel マクロは大いに使っていますが、用途としては、ファイル・フォルダ・メーラー・ウェブページのオープンとか、特定データベースの並べ替え・抽出、断片的なコードの実行による未知データのチェックなど、限られています。 普段、多くの部分は手作業で行っており(キーボードのショートカットキーも多用しています)、そのほうが時間的にも合理的です。VBA は Visual Basic for APPLICATIONs ですから、使いこなすためには、Excel というアプリの理解が元々重要な言語なのです。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.4

>エクセルのマクロを勉強したいと思っております。 良いことだと思います、頑張ってください。 一応、エクセルのマクロついて説明します。 VBAと言ってVB(ビジュアルベーシック)の文法が共通していますので 基本を理解しておくとVBS、VB.NetなどVB系の言語への理解は早いと思います。 1、VBAといって、それぞのOffice製品に付いている機能です。   WordやOutLookにもVBAの機能はついています。   それぞれのソフトが出来る内容、目的がことなりますので、VBAの使い方が   全く違うことになります。   VBの体系を学には、エクセルのVBAは特別にわかりやすいですし、   VBエディターの機能やHelp、Web情報もたっぷりあるので   入門者には、最適だと思います。 2、プログラムを動かすためのアルゴリズムを理解する。   プログラムを記述するためには、言語を覚えることは必須ですが、それと同様位に   どの様な手順をプログラムに書いて目的を実行させるか(これをアルゴリズムと呼びます)   の理解度が必要です。   これは、経験も必要ですが、先輩や他の方がエクセルのマクロをどの様に活用しているか   観察してみると良いでしょう。 3、仕事(職場)の中で、どの部分をマクロにすれば、便利になるのか、その際は   どの様な、シートやデータ構築をすれば良いのか。   初心者が失敗するケースで一番多いのがこれだと思います。   むやみやたらにVBAを記述して、かえって仕事を煩雑にしてしまう、シートやデータの構成が   むちゃくちゃだったために、必要以上にマクロが必要になる。エクセルに一般機能や関数で   十分なものまでVBAにしてしまう。等々ですね。   VBAと云う特技を身に付けたからと言ってむやみなVBA化はやめましょう。   エクセルの一般機能や関数も利用できるし、真の意味で役に立つVBAを考えましょう。 以上の事を前置きしたうえで >その他のプログラミング言語の理解も早まりますか? もちろん、役に立ちますが、基本はVB系の言語と思ってください。 アルゴリズムについては、全ての言語(言語以外に仕事の進め方などにも)に役に立ちます。 最後の、どのような機能のマクロを作成すれば良いのか経験にもなります。 これば、パソコンを活用するうえで共通の事と思います。 この3つが理解できれば、最高のエクセラーになり、他の言語の理解も早いし すぐに実績と出てくるので仕事が楽しくなります。 最後の部分を間違うと、最低のエクセラーになり、職場で煙たられますので注意してください。 VBA(特にエクセルの)は奥が深いので、全てをマスターすることは不可能と思ってください。 VBA言語については初心者であるが、周囲の仕事などを理解したう上で活用していくと 経験の中から、必要なVBAの能力が自然と上がっていきます。 プログラマーの能力 = 言語の能力 * アルゴリズムの能力 * 活用力 と云った式になると後輩には説明しています。 中には、VBAという特殊能力を持った為に、VBAマニアになってしまう人がいますので 注意しましょう。

回答No.3

まずはじめに、VBA(Visual Basic for Application)ですね。マクロとは、ひとつの作業の自動実行を目的とする機能のことです。VBAでは、必ずしも、マクロでないものも存在します。 #2さんがおっしゃっているのは、VBAは、Visual Basic(VB6) という言語のサブセットだということです。ExcelなどのVB エディター側のヘルプのバージョンをみると、Visual Basic 6.5 と出てくるはずです。実際に、VBAを勉強する過程で、途中から詳しい説明がなくなってしまうのですが、その時に、VB6のテキストは役に立ちます。 ただし、VBAは、不思議な作りで、Ver.4マクロ言語や Ver.5 のオブジェクトを搭載しています。現在のMicrosoft は、その利用法をどこにも載せていません。 Visual Basic.Net(VB.Net) ですと、言語としてはかなり違いがありますし、戸惑うことが多いのですが、何もしていない人よりはずっと助けになります。VBAで最上級のクラスを使いこなせるようにならないと、よくわかりません。 それはともかく、他のプログラム言語を勉強する時に気がつくことは、VBAの上級コースまで終わっていないと、さっぱり分からないということです。いきなり、そこから、と思うことがあります。本格的なプログラム言語には、初歩的な説明はありません。 道は長いですが、飽きずに毎日続けることですね。天才的な人は、3ヶ月でマスターするのですが、凡人では、1年以上かかると言います。良いテキストを入手して勉強することですね。そうしないと、1年経っても覚えられないです。ちなみに、私は、1年どころか、2年経っても覚えられませんでした。 なお、性格的に覚えにくいタイプがあります。それは、少し分からないことがあると、そこを納得しないと先に進めない人です。初歩的なことを掲示板で聞いている人がいますが、たぶん、上達の見込みは薄いです。分からなくても、とにかく先に進むということをすべきなのです。

horattya
質問者

お礼

ご丁寧な回答ありがとうございます。 毎日こつこつとがんばっていきます!

回答No.2

こんばんは、私もこれからエクセルのマクロを勉強しようと思ってます。 エクセルのマクロを記録しているVBAという言語は、Visual Basic .NETのサブセットに当たりますので、.NETへのとっかかりには丁度良いのではないかと考えています。お互いにがんばりましょう!

horattya
質問者

お礼

ありがとうございます。 一緒にがんばりましょう!!

  • black2005
  • ベストアンサー率32% (1968/6046)
回答No.1

勿論です。 マクロもプログラムの一種なので、その後も役に立ちますよ。 マクロを勉強することは、言語入門に最適だと思います。

horattya
質問者

お礼

ありがとうございます。