VBAを学習しようと考えている者です。ただし、プログラミング言語に関しては全くの素人なのでご容赦下さい。
質問の核となるのは、
「vbaを学習する際に、C言語を学習して知識を得る事は、その後のvbaの学習・習得に役に立つかどうか?」です。
なぜ、そのような質問をするかと言いますと、とある大学でvbaの習得を学生にお教えされている方の論文を拝見した際に、
「VBAというプログラミング言語は、C言語を最低でも1年間学習した人間でなければ、文法や規則性を記憶したり、定着したりする事が難しい。」
との情報が文章として記載されていたため、突然私のように、言語の学習経験のないものが手を出すと挫折をしたり、理解のスピードが追いつかないのではないかと考えたからです。
様々な質問箱に、VBAと他のプログラミング言語との難易度等の比較は記載されていますが、情報が氾濫していて、どの言語から手をつけてよいか混乱しています。
将来は、VBAを習得できたら少なくとも損をすることは無いだろうと思っています。
どうかどなたか私に知恵や指針を与えて下されば嬉しく思います。
どうかよろしくお願いいたします。m(__)m
No.3ベストアンサー
- 回答日時:
>>けれども、C言語を学習しなくても、VBAを学習するだけで現実には事足りる場合もある。
ええ、そうです。たとえば、上司に「○○するようなプログラムを書いてくれ」と言われたら、VBAで手軽に作れることも多いと思います。それで、目的は達成されます。
プログラムは単なる道具です。板に穴を開けるとき、錐より、電気ドリルがあるなら、それを使えばいいだけです。
しかし、できあがったプログラムを上司が使ってみて、処理速度の不満があったとき、VBAの内部でやっている処理が全く判らないでいたら、対応するのが難しいことがあると思います。
そういうとき、C言語の知識があれば、問題点の発見において有利になると思います。
ちなみに、C言語入門書は多くの書店で目にしますけど、私が学んだC言語の中級以上の書籍って、絶版になっていたり、置いている書店が少ないみたいです。あまり売れないのでしょうね。
P.S.
エクセルVBAの構文をMSで設計した方の書いた書籍を見ると、ビル・ゲーツは経営者であったけど、同時に現場のプログラマを相手にCやアセンブラのコードについて議論できる方であったということがわかります。
日本では、ソフトハウスの社長が、社内で最もPCに弱いってことがあったりします・・。
lv4uさん、再びご回答ありがとうございます。
>P.S.に関して
やはり経営者は、現場に任せきりで上から目線で指示を出していても、その企業は上手く経営を出来なくなってしまうのですね。
確かにそうですね。フルに現場と同等かそれ以上の知識や経験を持つのは、非常に難しい事だと私は考えていますが、基本的な知識や、命令を出すだけで、「あとは全て責任を持って仕事をしろ!」では、部下は経営者を信用しないし、モチベーションが下がる事はイメージがつきます。
>C言語の中級以上の書籍が入手しにくい
そうなんですね。(^^ゞ
今の私のレベルではまだ手にする必要は無い書籍かもしれませんが、その情報はかなり気になります。どれだけ探しても無いのであれば、国会図書館にお世話になって勉強をしようと思います。
分かりやすい丁寧な御回答で非常に助かりました。挫折しないように勉強を少しずつ積み重ねて参ります。
ありがとうございました。m(__)m
No.5
- 回答日時:
補足:「C言語を学ぶ」の解釈。
私の回答は、正確には「VBAを学ぶ前段としてC言語を学ぶと良い」というものではありません。実際問題として、そんな暇があればVBAを学ぶべきです。
私が初めてパソコンを買ったのは1979年の秋。まず、MZ-80Kの設計書とその解説を読んでマシン語と格闘しながら入力・演算・出力の流れを追いました。次に、当初刊行が開始された「岩波情報科学」(全24巻)を手がかりに学習を進めました。しかし、一向に、ビジネス用途のソフト開発の目処がつきませんでした。そんな時、社内のコンピュータ学科卒の社員から「フォートラン演習」を譲り受けました。「おっ、これだ!」と言うことで、寝る間を惜しんで全例題をBASICで書くことに挑戦。
当時のCADは億円単位の代物。そして、その端末は電子タイプライタ。人手による入力が一般的。私は、ほどなくして、それをパソコンに置き換えることに成功。入力とチェックをパソコンで行って最終データをCADに転送するという入力支援システム。なぜ、ズブの素人が、そういうプログラムを書けたのか?それは、「フォートラン演習」を教材に学んだからです。つまり、並び替え、検索、通信要領等をテーマにしたプログラムを書けるようになっていたからです。
先の回答では、「プログラミング言語C」の全例題をJavascriptでと書いています。目的は、私の入門学習方法である「フォートラン演習」をBasicでと同じことです。「C言語を学ぶ」の正確な解釈は、「C言語の教科書の例題を解くことでプログラムの基礎を習得する」ということです。その場合、Javascriptが一番の候補というのが私の意見。そういう意味です。
私は、その後、UNIXへと転身しWindows3.1を機にPCへと回帰しQuickC⇒QuickBasic⇒VBと学習を進めました。最後は、Javaで終わりました。つらつらろ、今のVBやVBAを眺めるにつれてある種の怒りがこみ上げてきます。
>オイオイ、昔のCより習得は難しいぜ。
>こんなの、もはやBASICじゃーねー。
>こんなの、素人が最初から取り組む言語じゃーねー。
>もっと、基本演習に特化したっていいじゃねーか。
>それが、BASICの存在意義じゃねーか。
こういう私の思いが、基礎習得ステージのメインテーマを「フォートラン演習」や「プログラミング言語C」の全例題を解くことにありと回答させたので。少し、「C言語を学ぶべし」と受取られかねない書き方だったと思って補足した次第です。
この回答への補足
フォートラン→「fortran」が、最初の高水準言語であることを、本日とあるプログラミングの本に書いてあった事を知りました。勉強不足で失礼しました。
fortranを全て基礎から頭に入れる時間は無いはずですが、入門程度のサイトを少しずつ拝見している経過をお伝え申し上げます。m(__)m
ありがとうございます。
「フォートラン演習」ですか。一般に販売されている本なのでしょうか?
補足をしていただいたため、プログラミング言語学習の優先順位や頻度など、学習する方法の勉強になりました。感謝いたします。m(__)m
No.4
- 回答日時:
私は、昔のBASIC→Z80アセンブラ(ハンドアセンブル含む)→8086アセンブラ→C→QuickBasic→VisualBasic→現在のVB.Net系の順にやってきました。
結構めちゃくちゃな順番ですね。C言語やVBAは目的を達成するための手段であって、本来の目的を達成するためのアルゴリズム(語弊がありますが「解法」とでもしておきましょう)などの習得は言語の知識とは別にあります。
例えば、名人にも勝てる将棋対戦プログラムを作ろうとした場合、VBAでもCでもどちらでも構わないのです。(処理速度は置いといて)。
仮にVBAで、頑張ってそのプログラムを作り上げたとすれば、当然そのアルゴリズムはC言語で作り直す時にも役立ちます。これは言語が何だろうが共通です。
逆に、どのような言語を習得したとしても、アルゴリズムを習得しないと、何も作れないのです。
TXV12003さん、御回答ありがとうございます。
なるほど~。アルゴリズム(解法)を習得・理解さえ出来れば、使用する言語はどれでも構わないのですね。そして、アルゴリズムが習得できれば、他の言語にも応用・修正出来る。
…そして、実はそのアルゴリズムを習得するのが、プログラミング上最も時間や労力を裂かなければならない部分なのでしょうか?この仮説は私の推論ですが。
こちらの推論が的を射たものか、よろしければ再びアドバイスお願いいたします。
No.2
- 回答日時:
Q、C言語の習得はvbaの学習・習得に役に立つのか?
A、問題は、役に立つように学べるかどうか?
私は、ズブの元素人プログラマです。決して、その道のプロではありません。ですから、この回答は、参考程度に読み流して下さい。
>C言語を学習の有用性の解釈は評論家に任せよ!
>もっと大事なことは、役立つ為にはいかに学ぶか!
これが、私の回答です。
さて、私は、「プログラミング入門CII」の解説と全例題のJavaScriptでの書き方を小冊子にまとめて配布した経験があります。
第1章 やさしい入門_____________JavaScript入門
第2章 データ型・演算子・式_______JavaScriptと変数・演算子
第3章 制御の流れ_______________JavaScriptとプログラムフロー制御
第4章 関数とプログラム構造________Javascriptと関数
のような目次です。この小冊子は、「VBAの基礎の基礎を学ぶ」というサブタイトルが示す通り、VBAの習得を促すためのものです。
<script type="text/javascript">
<!--
//
// Javascript: f=0,20,・・・300に対して、摂氏-華氏対応表を出力する
//
var lower = 0; /* 温度表の下限 */
var upper = 300; /* 上限 */
var step = 20; /* きざみ */
fahr = lower;
document.writeln("<pre>");
while ( fahr <= upper) {
celsius = (fahr - 32) * 5/9;
document.write(fahr + "\t" + celsius + "\n");
fahr = fahr + step;
}
document.write("</pre>");
//-->
</script>
さて、なぜに「VBAの基礎の基礎を学ぶ」という小冊子を書いたのか?それは、余りにも、つまみ食い的な学習が蔓延していたからです。「変数・演算子⇒プログラム制御フロー⇒関数」という順を追っての学習が完全に欠落していたからです。そういう学習に立ち返るって意味では、C言語を学ぶことは意義あることだと思いますよ。
f_a_007さん、ご回答ありがとうございます。
小冊子とはいえ、プログラミング言語について説明出来るほどの知識や経験をお持ちでいらっしゃる方なのですね。いまだに情報リテラシーに関してさえ、基礎的な知識を持ち合わせていない私にとってはアドバイスいただけて嬉しく思います。
…なので、中段の言語に関しては全く理解できないレベルです。英語に対して抵抗は無いため、「celsius」や「fahr」が「摂氏」「華氏」を表していることは何となく分かるのですが・・・。
>つまみ食い的な学習が蔓延
VBAのみを理解しても、いざプログラムを実行して、書きこんだプログラムが間違っていたら訂正する場所が全然分かりません。では、その後の訂正処理が大変な労力と時間をかけるハメになることを、私は想像しています。プログラムを実行してからでは遅いですよね。
アドバイス、本当にありがとうございました。m(__)m
No.1
- 回答日時:
>>「VBAというプログラミング言語は、C言語を最低でも1年間学習した人間でなければ、文法や規則性を記憶したり、定着したりする事が難しい。
」情報科学の先生からすれば、そういう意見があるのもわかります。
ほんとうにプログラムの動作を理解しようとすれば、高級アセンブラと呼ばれるC言語だけでなく、アセンブラの理解は必須です。
その考え方からすれば、VBAの理解には、C言語の理解が必須ということになるかもしれません。
私は、BASICインタプリタの動作を機械語レベルで教える本を読んでますので、その先生の意見は判ります。
そして、米国のあるソフトハウスの社長は、「初心者はJavaではなく、C言語を学ぶべきである」と書籍に書かれていましたけど、ほんとうにコンピュータ言語を理解したければ、C言語を学ぶ必要があると思います。
でも、普通の人たちは、TVの動作原理も知らずに、リモコンでTVを使いこなしています。
同じようにC言語を知らず、VBAの使い方を学べば、同様にプログラムを使いこなすことができますし、C言語では30行かかることが1行で可能になることもあったりしますから、学んでいて損することはないと思います。
lv4uさん、回答ありがとうございます。
「VBAだけを学習する事は便利なプログラミング言語の操作を学習するだけであり、根本的にプログラムの動作を理解するには、アセンブラから学習する必要がある。けれども、C言語を学習しなくても、VBAを学習するだけで現実には事足りる場合もある。」
という事でしょうか?
もし、私の理解に食い違いがありましたら、失礼しました。m(__)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
c言語はある程度わかるのですが、エクセルvbaは始めるにあたり、敷居が高く感じます。何故でしょうか、
Visual Basic(VBA)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
VBAとjava
その他(Microsoft Office)
-
-
4
EXCELにてローパスフィルタを作成する
その他(教育・科学・学問)
-
5
C言語とhtmlの違いを どなたか分かり易く 丁寧に教えてください
HTML・CSS
-
6
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
7
C言語でgetchar();が上手く使えずに困っています‼ void input(char *cx,
C言語・C++・C#
-
8
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語、C+、C++、C#の違い
-
C++における継続行
-
COBOLでのNOT = の AND条件
-
シグナルと例外の違い
-
プログラムに書かれる"%"記号の...
-
C言語とhtmlの違いを どな...
-
VBScriptで引数を省略したい場合
-
vbaとc言語の関連性について
-
UNITY Float型の接尾辞fって
-
C++ ってなんて読む?
-
TO_CHARで小数点以下がある場合...
-
UWSCはどのプログラミング言語?
-
商業用アドベンチャーゲームに...
-
順列の内容をすべて表示するプ...
-
チューリング完全とは何か?
-
プログラムからアイコンファイ...
-
HTMLは、プログラミング言語じ...
-
組込みプログラム言語の容量・...
-
VB.NETがDelphiより有利な点は
-
計算速度の速いC言語を教えてく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語、C+、C++、C#の違い
-
COBOLでのNOT = の AND条件
-
UNITY Float型の接尾辞fって
-
プログラムに書かれる"%"記号の...
-
C言語とhtmlの違いを どな...
-
vbaとc言語の関連性について
-
C++における継続行
-
UWSCはどのプログラミング言語?
-
COBOLで文字タイプを数字...
-
VCとVC++
-
TO_CHARで小数点以下がある場合...
-
VBSでDim、Private、Publicの違い
-
C++ ってなんて読む?
-
Excel VBAで文字化けする (英語...
-
VBSとWSHは読み方が違うだけで...
-
.Net Framework APIがあればMFC...
-
今ってプログラミング言語は何...
-
VBScriptで引数を省略したい場合
-
HTMLとC++で、どんなホームペー...
-
Excelの開発言語ってなんですか?
おすすめ情報