アプリ版:「スタンプのみでお礼する」機能のリリースについて

年末年始を使い、マクロとVBAの勉強をしてます。
参考書通りにやれば、もちろん操作はできますが、これを実生活(仕事)で生かそうとするのは難しいかなと思います。

例えば構文の場合、繰り返しの処理をしたいときに
"for○○ = ☆ to ☆☆"という他に、場合によっては"do until ☆ loop"という構文を使う場合もあると知りました。

たぶん今の私だと、どういったときにfor、どういったときにuntilを使うのかわからず、適当にforの構文を入れてエラーになりお手上げになる気がします。
その他、演算子にしても、まだまだうまく使い分けられないと思います。

普段プログラミングをやっている方は、どのように覚えましたか?
やはり慣れでしょうか?

「プログラムの演算子や構文、どう覚えました」の質問画像

A 回答 (8件)

>>たぶん今の私だと、どういったときにfor、どういったときにuntilを使うのかわからず、適当にforの構文を入れてエラーになりお手上げになる気がします。



別にuntilを使う必要が無いなら、使わなければいい。
forよりも、untilを使うほうがプログラムが分かりやすくなると思える場面があれば使えばいいだけのことですよ。
    • good
    • 1
この回答へのお礼

ありがとうございます。
使い分けができるようになるまでが当面の目標ですね。
今は、参考書を3日も見なくなると本当にほぼ忘れます↓
早く、転職できるほどのスキルを身につけたいのですが。勉強頑張ります。

お礼日時:2019/01/16 22:52

私は質問サイトに上がる回答を見てどのように作っているのか質問者さんと同じ状況(ブックを作ってみる)で回答コードを試す。


そんな事を繰り返しながら『どう言った時にどう言う物が使われているか』を学んでいきました。

For To ~ Next ですと私なら For Each ~ Next を使う機会が多いですね。
それも何回も繰り返して検証をした結果、どれが使いやすいのかを選択した感じです。
その間に自身も回答者となってコードを作ってみては諸先輩に指摘を受けて直してみたりと、昔は回答者同士でも教えあう雰囲気がありましたから。
なのでそこそこ勉強させてもらいましたよ。(回答者で参加してるのに質問しちゃったりとかも)

なんか今はベストアンサー争いが激しいためかそう言う感じではなくなってきたみたい。(ここ7年位は)
    • good
    • 1
この回答へのお礼

ありがとうございます!
教えあう風土は良いですよね。マイノリティであるプロのゲーマーの方々は互いに教えあうと、情熱大陸で放送していました。
環境は変わっていくものですね…

実例を基に仕組みを考えるのは良い勉強になりそうですね。
今は、いちいち「each VBA 意味」のように検索してはつっかかり、検索しては「あぁこういう意味なのかな」という状態です。
早いところ、この1から苦しい状態を抜けられるようさぼらず勉強します。

お礼日時:2019/01/16 22:56

何回も繰り返して覚えます。


実生活にどう生かすかなんて考えは無く、ただの興味だけです。
仕事であれば、それが生活のためになります。
目的も興味もないならば、覚えても意味がありません。
    • good
    • 1
この回答へのお礼

ありがとうございます。
私の場合は目的があり、最終的には転職または副業してお金を稼ぎたいと思っています。
独学でやっている方や学校で習っている学生よりも知識が乏しいのはわかってますが、やらなきゃ本当にゼロなのでできるところまでやるつもりです。

お礼日時:2019/01/16 22:58

①普段から、自分で作った、使い慣れた構文で作ったプログラムを基本にして、修正しながら、使いこなしていく。


 自分の引き出しを多く持っていることで、仕事上での効率化、エラー、原因不明でのデバック期間を短くする。
 できるだけ、コメント文を多く残しておくと、後々、修正したり、見直す時に楽です。
②勉強して、新しいことを学んだときは、その部分だけを色々と試す。どんな風に動くか、どんなエラーが発生するかを調べて見る。
③自分が陥りやすいエラーやその対処方法をできるだけ、メモで残しておく。
 →エラーが出てくると、そこを直せば良いのでデバックはやり易い。厄介なのはエラーに引っかからずに値がおかしい状態になる場合で
 色々と原因を探りながら、追及していく。結局慣れでしょう。
 
>たぶん今の私だと、どういったときにfor、どういったときにuntilを使うのかわからず、適当にforの構文を入れてエラーになりお手上げになる気がします。
上記、②、③が参考になるのではないでしょうか?。
仕事時は使い慣れているものが一番。勉強の時に、新しいものも試してみる。

>その他、演算子にしても、まだまだうまく使い分けられないと思います。
慣れですね。

>普段プログラミングをやっている方は、どのように覚えましたか?
自分が使い慣れた本に、附箋を貼ったり、書込みを入れたりして、手元に置きながら、見直し用にしています。

一緒に仕事をしていた女性のプログラマは、日頃、使う構文等をエクセルで自分で作って、机の前に置いていました(すごいなと思いました)

私の場合、無理に覚えるのではなく、ポインタ先を準備しておくという感じですね。
ここの質問・回答をちょこちょこ見ておくと、結構勉強にもなりますよ。(質問のサンプルを自分でrunしてみたりもして、能力の幅を広げています)
    • good
    • 1
この回答へのお礼

大変丁寧にありがとうございます。日々勉強ですね。女性プログラマの方を見習わないます。
仕事で使っているシートに、前任者がマクロを仕込んでいたのですがそれがうまく作動しておりません。
原因がわかればと思い勉強し出しまたのですが、ちんぶんかんぷんです。むしろ、VBA画面を出したところ、標準モジュールがなさそうで、最初から何だこりゃ状態です。
参考書のように、1度習ったらすぐに応用効くようになれればいいのですが…。
いろいろと難しさを感じていますが、入門から初級のレベルまで上げられるよう頑張ります。

お礼日時:2019/01/16 23:05

プログラミングって明確な目的がないとなかなか覚えられないし、仮に覚えてもすぐ忘れます。

こんなこと言うと怒られるかも知れませんが、勉強することじたいが目的になっている勉強だと、おそらく今のレベルを脱するのは困難な気がしますね。

これがマクロじゃないとできない(量が多すぎて手作業でやってられない)ことをさせたい!現に今困ってるんだ!みたいな目的がある人は強いんですが…。何かそういう目的・ネタはありませんか?それがあれば、最初はとにかく動きゃいい、動くようになるまでの過程でいろいろ経験していくことが最も良い勉強だと私は思っています。また実際に困ってることが解決できるかも知れないとなったら、そう簡単にあきらめないですし。
    • good
    • 2
この回答へのお礼

ありがとうございます。おっしゃる通りだと思います。参考書だけ見ても本当すぐ忘れます。
ネタといえば、マクロを勉強するきっかけとなった、前任者が作ったマクロ入りExcelの破損を直すことです。
社で購入した物品に対し、何を目的に購入したかを記入するシートがあるのですが、こちらに記入をすると、目的ごとに分かれたシートに自動反映されるという仕組みのものがあります。何がきっかけかこちらがうまく作動しなくなり、手入力したらデータが消えるなど困っていました。
このシートのVBA画面を見たら、そもそも標準モジュール画面がなくて、なおさら??だったのですが…
明日出社したらもう一度その表を見てみます。週末の勉強用に、そのシートをUSB経由で自宅PCにコピーしたいくらいです。

お礼日時:2019/01/16 23:10

こんばんは。



私は、あまり人にどうこう言えるような立場ではありませんが、一応、覚えたつもりになっています。私は、No.2さんと同じで、信頼のおける諸先輩の回答をみながら掲示板で覚えました。信頼がおけない人でも、技術力がある人のコードはやはり試してみることは大事ですが、下手にコメントを書くと、とんでもない言いがかりをする困った人もいます。

以前の「教えて!goo」でも、回答者同士で教えたり・教わることも多かったのでしたが、今は、「規約違反だ」といってくる人がいるのはとても残念です。

ここの掲示板も回答者のレベルが常連では、かなり一定した基準以上になりましたね。

確か、C言語の本を書いているハーバート・シルトという人だったと思いますが、コードを500書けば、一通り覚えるといっていました。一日3つのコードを書けば、4ヶ月程度で終わるということです。実際に、そういう人もいます。だいたいは、3年がひとつの目処だとは思います。

それと、私が掲示板を読んでいて気になるのは、「学習の中途で質問するな!」ということです。そこを気にしたら、先に進めないからです。

"for○○ = ☆ to ☆☆" と "do until ☆ loop"

どちらがどうというのは簡単ですが、掲示板などを1ヶ月でも眺めていれば、自分自身で気が付きます。そして、デバッグをマスターすれば、上達します。

ちなみに、そのときに、インデンターがあると、ミスを見つけやすいです。
http://www.oaltd.co.uk/Indenter/Default.htm

プログラミングは語学と同じでしょうね。人によっては海外に行って現地の人と話をするとか、仕事で接待に喋れるようにしたいとか、目的は様々です。しかし、私のように、なんの目的もなくやっている人もいます。それは、どちらかというと、語学よりも数学を勉強するような感覚です。ある方は、VBAの訓練として、数学を勉強すると良いと言っていましたが、その人は、3年足らずでプロになってしまいました。

VBAは、学習段階では途中で思いついて何かを作ろうとしても形にならないことが多いようです。せめて、VBAの教科書(テキスト)をお持ちなら、最初のページから最後までページまでやり終えてから、何をしたいか決めたほうがよいと思います。その間は、辛抱です。

なお、私は、No.5さんのおっしゃる勉強すること自体が目的になっているかもしれませんね。目標も持たないもので「今のレベル」の意味合いもあるかと思いますが、それを越えられないといわれればその通りです。でも、それが悪いと思っていないのです。Ribbon Customizeにしても、Excel DNAにしても、また、 Git.Hub での管理するための Ariawase にしても、覚える必要性も使う必要性も何もありません。でもやっていて楽しいわけです。

「越えられない」というのは、何が問題かと言えば、VBA自体をベースに考えるから、ボーダーラインを越えていかないのだろうと思います。それにつけても、15年を過ぎても、知らないことはいっぱいあります。しかし、多くの人が、Excel VBAを見切りをつけて去っていきました。
    • good
    • 1
この回答へのお礼

大変詳しくありがとうございました。
最後の、多くの人がVBAに見切りをつけたという御文が気になります。
実はVBA、マクロ以外にも語学を学んでいますが、いちいち疑問が出てきます。小さな疑問も大事と思いつつ、後からわかることも多いので、とりあえず「そういうもんだ」で流すのも大事なのかもしれません。

せっかく熟練した回答者同士が、見下したような言葉を吐いたり、お互いに教えあう空気を邪魔するのは残念ですね…。
これからプログラミング言語を学ぶ方はもっと増えると思うので、争いごとは極力ないことを願ってます。

お礼日時:2019/01/16 23:22

書籍を真似て動作が確認できているのであればもう一歩ですよ!



後は自分なりにコードの内容を少しづつ変更してみてはどうですか?

例えば繰返し処理を挙げられていたのでForをdoに書き換えてみたりなどして

もっと短く書けるコードが見つかるかもしれません。
(変数1つ減らせたりネストが浅くなったり)

はやりそれには他の人のコードを見るのが勉強になります。
    • good
    • 1
この回答へのお礼

ありがとうございます。
問題集の回答例でも、何パターンかコードが書かれており、それを見るだけでも勉強になりました(書けませんが…)。
今は実験の繰り返しですね。頑張ります!

お礼日時:2019/01/16 22:50

最初にうちは使い分けを考える必要はありません。


どの構文でもよいので、とにかく処理が書ける様になることが大事です。

アルゴリズムを自分で組み立てる程度に習得した後で、
考えたアルゴリズムを実装したいのに綺麗に書けない、と感じた時に、
改めて教科書を読みなおして他の構文が使えないか検討してみてください。
    • good
    • 2
この回答へのお礼

ありがとうございます!とにかく量ですね。
疑問が湧くようになってきたら若干知識がついてきた段階なのかなと思います。
まずはそこまでを目指します。

お礼日時:2019/01/16 22:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!