現在位置は
です

発言小町

新しいトピを作成
本文です

エクセルVBAどうやって上達しましたか? 携帯からの書き込み

らら
2010年6月26日 10:39

エクセルVBA歴一年です。といっても家庭の事情もあり勉強ペースはゆっくりで
なんとか変数や繰り返し構文、条件分岐などを使い
小さなマクロが組める程度です。
エクセルVBAが出来る、勉強されてる方にお聞きしたいのですが、どうやって上達されましたか?
また練習問題を扱うサイトや書籍があれば教えて下さい。よろしくお願いします。

ユーザーID:9029285586  


お気に入り登録数:159
  • 携帯に送る
  • このエントリーをはてなブックマークに追加
新しいレス順
レス数:22本
最初へ 前へ 1 2 次へ 最後へ すべて トピ主のみ(2)

このトピックはレスの投稿受け付けを終了しました。
タイトル 投稿者 更新時間
本職SEの前は、まったくシロウトでした
LEE
2010年7月27日 16:33

なので、VBAの習得での苦労はよーーーーくわかりますよ。

今は、
ExcelVBA、AccessVBA、の両者について、
実務経験(笑)は相当あります。
もちろん、本体の操作、関数についてもかなり把握してます。

その私が提案できるのは、
なにか一つ、自分の生活に身近なツールを作り上げることです。

ボタン一発で、ある特定セルに入力された年号を取得し1年分のカレンダーを作るとか。
平日、土日祝の書式を自動設定し、一ヶ月あたりの行数もうるう年も考慮して設定、
マクロ登録だけでは実現できないし、
セル操作、シート操作も同時に実装しないといけないと思うので、
ちょうどよいのでは?

家計簿も手ごろでしょうね。
演算関数や、入力補助に行列関数を利用すると良いので、
BOOK操作に加えて関数を利用することになるし。
気分が乗ったら、グラフ描画も追加しても良いかもだし。

なにか作り上げようとすると、
必ず壁にあたり問題点が明らかになります。
問題点が明らかになると、調査・対策が具体的になるし、目的も明確になるので理解しやすいですよ。

ユーザーID:8921129818
VBA楽しい〜
nero
2010年7月25日 8:00

随分遅いレスですが、まだご覧になっているでしょうか。
私はアクセスやビジネスオブジェクトなどのデータベースとエクセルを連携させて
レポートをVBAで作ったりしています。
もりぞーさんが書かれているもの以上の機能を使って、手作業だと
今まで20分〜1時間かかったものが数秒で出来るとか、
手作業で不可能に近いようなレポートをバチッと数十秒単位で作成できるのがVBAの醍醐味ですよね。
ユーザーフォームを使って何年度何月と指定させると
その月の財務諸表が前月、前年度対比偏差つきで出てくるとかね。

とにかく、こんなことが出来たら便利だろうなーと思うことをどんどんやってみてください。
ある程度わかるようになったらマクロを記録したコードを解析して仕組みを調べるのは本当に勉強になります。私はコンピュータは好きですが、正式に勉強したことはないんです。
でも、本と首っ引きで基本を学び、どうしてもわからないところは
ユーザーグループの質問を参考にしたり、必ずやり方はある、と工夫していると
自分でも驚くほどいろいろなことが出来るようになりました。楽しんで、頑張ってください!

ユーザーID:0181206012
ありがとうございます携帯からの書き込み
トピ主です(トピ主)
2010年7月24日 17:37

色々なご意見やアドバイスありがとうございます。お礼が遅くなり申し訳ありません。色々経験しないと上達は難しいですよね。皆さんはやはり業務上でエクセルVBAを使用され上達されたのでしょうか?例えばどんなものを作成されましたか?

ユーザーID:9029285586
経験がすべて
オーソレミヨ
2010年7月16日 23:57

その意味ではまさみさんのコメントと同じですね。
業務上の場合には同僚で得意そうな人をみつけ、
その方が使っているファイルをサンプルでもらい、
勉強しました。
レコードマクロで、簡単な動きを記録し、参考書と比べるというのも
役に立ちます。

>家計簿程度ならばVBAを使わなくても関数を覚えれば十分に作れます
とのコメントもありますが、関数だけで作った結果
重いファイルになり、かつ何年にもわたるデータ集積が難しくなり
VBAに、と思ったことがあります。
ただ、自分が実現したことは、VBAよりアクセスの方が楽そうだったので
アクセスを勉強しようと思っている間にサポートがなくなってしまい、
目下、SQLで、と考えているところです。

ユーザーID:5874600518
必要は上達の母
ゆーぼー
2010年7月16日 23:21

上達の秘訣なんですが「必要は発明の母」という言葉が正にそれです。
仕事でも、趣味でも、何でもいいんです。
以前、私は、コンピュータ装置間のケーブル接続図作製やら、製品に貼られたバーコードを読み取って、作業者に指示を出すアプリケーションを作ったことがあります。
また、数独(ナンバープレイス)の解析マクロも作成したり、音声信号
(.wavファイル)の解析に使ってみたりと、とても重宝しています。
とにかく、VBAで出来そうなことには、とにかく、チャレンジです。
これを繰り返している間に、VBAはあなたが発する言葉みたいになってきます。
Excelシートのマス目を見ていると、その適材適所が見えてきませんか?
その中で「あれがしたい」と思ったら、それを常に頭に置いて、インターネット
検索やら、本屋巡りをしてみましょう。
そうしている内に、どこかで出会うんです。「これだ!!」という情報に。
そうすると、そこでワンステップのレベルアップが出来るんです。
それを繰り返すんです…

ユーザーID:5465773844
初心者ですがこの本はよかったです。
なん
2010年7月16日 18:41

業務の片手間でやってたので何回か挫折しましたが、この本を読んで実践してみたら急に実用的なVBAが作れるようになりました。
素人にしてはですが。

「Excel VBAのプログラミングのツボとコツがゼッタイにわかる本」
著者: 立山秀利

必要に迫られて作ったのは、例えば、POSレジのデータと他のデータを組み合わせて会計ソフトに取り込むデータ書式に書き直したり、タイムカードのデータと出張など交通費のデータとシフト表を組み合わせて勤怠チェック等を行ったりと言った感じのものが多いです。

上手く使えるようになってきたら作業量が激減しました。
12日位かかってた作業が2日とか、1日仕事が2分とか。

お互いに頑張りましょう。

ユーザーID:2829092431
プログラム言語かロジックか
マルチリンガル
2010年7月2日 19:52

鴨南蛮大好きさんに一票

ロジック(アルゴリズム)の習得は、なにをやりたいのか、
そのためにどうするのかを考える力を身につけることです。
プログラム言語(VBAとか)は、ロジックを言葉として表現する技法です。
経験上、ロジックをしっかりできるようになれば、言語はどれだっていけます。
(PC言語10か国語ほと話せます)
たとえば、カレーのレシピ(ロジック)を知っている人が、英語でも、中国語でも、言葉(プログラム言語)ができるのであれば、それぞれの言葉で説明することができます。
逆にカレーのレシピをしらなければ、いくら英語や中国語ができても、
おいしいカレーをつくることはできないのです。
VBAで一通りできるようになったと思ったら、アルゴリズムの入門書や他人のコード、
他の言語のコードなどをみるようにすると、違った見方を習得できます。

ユーザーID:4774384839
基本をしっかり身につける
Regina
2010年7月2日 10:33

1年以上もやっているなら、そろろろ「***マスター」といったような、一通り勉強できる本を買って、基本をしっかり身につけた方が早いと思います。巷にはコード集がたくさん出ていますが、いつもそればかりに頼っていると上達しません。
そして、仕事をしているとき、いかにしたら今の作業が楽できるかという考え方を持つことです。1度しかしない作業でも、マクロを使ってやったほうが早く出来る場合もあります。コードを考える時間と作業時間との兼ね合いも考えなければいけませんから。

ユーザーID:8962026725
アルゴリズムを学んでみるのも一興かと
鴨南蛮大好き
2010年6月29日 1:18

以前、故あって情報処理試験を受けたのですが、その勉強の際に教本に載っていたアルゴリズム問題を理解するために、ソートのアルゴリズムをVBAで実装してみた事があります。
セルにランダムな数値を入力するマクロをつくり、そのセルの数値をソートするマクロをアルゴリズムに従って組んだわけですね。
実行してみて、セル上の数値がソートされる様はななかなか面白かったです。
アルゴリズムについては以下のページなんかが参考になるかな。(例示されているソースはVBだけど、書式はそんなに変わんないから理解出来ると思う。配列はセル"Sheet1.Cells.(i,j).Value"とかに読み替えて・・・)

http://itpro.nikkeibp.co.jp/article/COLUMN/20061024/251654/

ユーザーID:8948619851
やっぱ何に使うか、じゃないですかね
こけもも
2010年6月28日 14:51

Excelっていろんな事が出来るので、何に使うかによって使う種類も違ってくると思います。

主人は理系の仕事をしているので、それで組むマクロは私には理解できない計算式がズラズラ並んでいます。

私は趣味が講じて、知り合いの仕事を手伝う程度ですが、文字列の絡む集計マクロや、ファイル管理、フォームにボタン等を配置して入力画面を作ったり、プログラミングが上手いというより、頭を捻って発想の転換みたいな事の方が多いです。

結局、いくら上達しても、作るマクロが未経験の内容であれば、ネットで情報集めて作っていくので、キリがないです。

アルゴリズムくらいは知ってた方がいいでしょうが、やはり必要に応じて作るのみです。

現在の業務の中で簡素化したいものはないですか? そういう物を作っていけば良いと思います。

それであちこちネットで調べてると、プログラムの組み方の基礎とかわかってきます。

最終的には見やすくて誰にでもわかるプログラムを組めるのが理想かと。
基本は短いプログラムを作り、サブルーチン(死語?)を上手く駆使するといいんじゃないかと思いますが。

ユーザーID:0103799654
MSオフィシャルBOOKが教科書。
夕凪
2010年6月28日 10:51

最初は登録型マクロで、これはこれでわかりやすく重宝しました。

EXCEL4くらい?からVBAが搭載され、当初何がなんだかわかりませんでした。
ただEXCELは、記録機能がありますから、何とかくいついていけました。
これが無かったら、今のスキルがあったかどうか??

仕事上、必要に駆られ、見積のような、多量印刷プログラムをめざし、自動印刷できるようになったとき
本当に嬉しかったです。当時印刷機が機能に追いついていず、またメモリが高価でしたから、のんびり印刷でした。
当時ゼロックスコピー整備技術者に何となく話をすると、コピー機はネットワーク仕様で印刷機として
使えるとアドバイスいただきました。当時WINDOWS95、ネットワーク機能も一様ありますよ位の状態でした。

なつかしいです。ゼロックスの技術屋さん、ありがとう。

本来データベースソフトですべきですが、単体で印刷ソフトとしてEXCELは大いに使えます。
分岐から、印刷部位の拾い上げ、書式、印刷実行など。
プログラムの最適化から、変数の定義、ボタンなどによる汎用化から応答方式での分岐処理と進みました。
プログラムの動作期限付きまで。

ユーザーID:3502332505
トラップがたくさん、
とにかく組む
2010年6月27日 19:55

 40代なかば、なんちゃってエンジニア(♀)です。
幸い日本のPC黎明期からプログラムはかじっているので学生時代にBasicかじった経験ありです。

VBAの使い勝手は、Basicがわかっていれば基本は理解出来ると思います。
ただところどころ欠陥があって、相対指定なら動くけど絶対指定だと正常動作しないとか色々細かいトラップが仕掛けてあって変なところでひっかかります。なれないうちは、最初からスマートなプログラムを書こうとすると進みません。最初は泥臭いださださなとりあえず動くものを作って、それを書き換えていくのがお勧めです。

 個人で色々解説して下さる親切な方のサイトやフォーラムを参考に理解を深めるのがよろしいかと思います。
他の方の助力なしで理解を深めるには難しいと思います。

プログラミング上の難易度というよりは謎解きのような楽しさはあるのですが、仕事としてやっていると作業進捗度に自分で多少イラつきます。
(まぁ、周囲もVBAはわけわからんという認識があるので、亀の歩みで書いたプログラムでもあのVBAで良くやったという評価はいただけました。)

ユーザーID:9721326282
' を使う
みつまめ姫
2010年6月27日 3:31

アドバイスをできるほどの上級者でないので恐縮なのですが、
出力用のフォームを作成することが多いのでその際のコツを。

一から構文を作成するのは苦手なので、基本的に基本動作のマクロを記録してそれを改造したり
ネットや参考書の構文を写してから改造します。
その際に、1つまたは一連の動作の構文の上に必ず注釈をつけます。
'(アポストロフィ)が先頭についている文は動作に反映しないアレです。

'○○のシートを印刷する
'○○のシートの印刷イメージを表示する
'シート名をセル○の値に変更する
'セル○の位置にイメージを貼り付ける
(簡単な例えでスミマセン)

こうすれば次回にまた似たような動作の構文を作りたいとき
すぐに参考・転用できるし、数が増えれば自分に合った例文集が作れたりします。
(印刷シリーズ、移動シリーズ、検索シリーズなど)

あと、もりぞーさんが書かれていますが関数そのものに慣れることは大切です。
excelの関数はウィザードがわかりやすい(「何」を「どうする」かを埋めていきますよね)ので
どんどん見慣れぬ関数も試してみるといいと思います。

ユーザーID:9205556845
初歩的な段階では
ごぶさたさん
2010年6月26日 23:01

エクセルのマクロの記録を使うと
エラー・バグのないコードが見れます。
まあ、VBAっていってもビジュアルベーシック
の親戚なんで、記述体系は似てるますよね。

まあ、エクセルのシート内でする動作の範囲
が主でしょうが・・・。

併用してビジュアルベーシックの学習を
進めると学習の参考にもなると思いますよ。

ユーザーID:2175343658
早速ありがとうございます。携帯からの書き込み
トピ主です(トピ主)
2010年6月26日 20:10

貴重なご意見ありがとうございます。お一人ずつお返事出来ない事をお詫び申し上げます。書き損ねていましたが、フルタイムで事務職の仕事をしています。就学前の子供がいる事や平日休日共、家事等に追われ自宅では、なかなか腰を落ち着けPC前に座れません。勉強出来るのは昼休み少々とごく少ない仕事の合間をぬってと言う感じです。かれこれ一年がたちました。勉強しようと思ったきっかけは、他人が作ったマクロを使ったエクセルを扱うのとその意味を理解したいと思ったからです。勉強し始めると本当に面白く思った通りにマクロが動くとPC前で「よっしゃ!」と達成感を味わうこの頃です。関数をとの事ですが、ある程度は使えてると思いますが、こちらもマクロと同様にスキルアップしていきたいですね。

ユーザーID:9029285586
睡眠時間を削って勉強しましたよ
とおりすがり
2010年6月26日 19:20

仕事(業務上、エクセルは使っていなかった)にてエクセルを使い
1図形座標データを作るプログラムを作りました。
2テキストファイルを画面で見ながら手書きしていた作業を
テキストを読み込んで、書式をつくり、埋め込んでやりました。
(手書き作業の撤廃)
3CADのスクリプト(エクセルのマクロみたいなやつ)をエクセルで
作ってみました。

今、仕事でやっている時間のかかる作業をエクセルに置き換えてやると便利ですよ。

ユーザーID:8177591260
確かにニーズあっての上達ですね
むし
2010年6月26日 18:11

VBAそのものはもう10年以上断片的に使っています。仕事上必要があればという意味になりますね。
職種はSE又はPGです。

私の感覚では、エクセルブック上でのVBAは簡単じゃあありませんが、適当な参考書を2冊位持っとけば充分でしょう。サンプルもゲットできますしね。ネットで拾うのが楽ですが、本も持っていたほうがいいと思います。

使用頻度はより低くなるのですが、サーバーやフォルダをまたがったブックから、シート、セル単位で情報を集めたり、加工してファイル出力することが結構あります。すでにVBAじゃなくスクリプトやVBの守備範囲じゃないのかとも思いますが、環境の問題で仕方なくVBAを書いていくことも実践では多々あります。

歴だけは長いので色々経験しました。数やれば誰でもある程度はいける様になりますので心配しないで良いです。もっとも、細かくメモしても結構忘れちゃいますけどね。

ユーザーID:9507924670
エンジニアです
hima
2010年6月26日 15:08

独学で複数の言語を扱えるようになりました。
ビジネスでお使いになるのでしょうか?

・記憶マクロで作成して解析
・既存プログラムを解析
するといいと思います。

技術面以外で重要なことですが
ドキュメント(仕様書など)作成しますか?
自分の作りたいもの、機能を明確に書面(文字・図面)化できることが
上達の秘訣です。

ユーザーID:4334600450
ある意味、戦いの日々…なぁんてね(笑)
ところてん
2010年6月26日 14:46

自分の場合は、というと

とにかく理不尽な要求をこなした後の達成感のために
ひたすら覚えた、ですかね。

それはAccessでやれよな!の内容を『でも、Excelしかないから』とか
それはグラフ専用ソフトを買えよ!の内容でも『でも、予算ないからなんとかExcelのグラフでできないかな?』とか

ふざけるな!と言いつつも
内心では『でも、やれないはずはないかも…』と口から出る文句とは裏腹に
既に脳内ではフローを考えている自分が居る。
で、またそれを知っている周囲も居る。

と、いうのが私がExcelから『お願いだからそんな無体な事させんといて』と怒られるギリギリまで、VBAで何とか処理を完了させる事ができるようになった実態ですかね。

達成目的があって
それを実現するためにはどうしたらいいのだろう、とひたすら調べて実際に書いて、たくさん失敗して、何とかたどりつく方法を会得する、というのが
一番、覚えるには最適なのですが
独学のままだと、その課題が手に入らないので大変だと思います。

トピ主さんが望まれている答えにならなくてごめんなさい。

ユーザーID:8741667440
関数だけではダメなの?
もりぞー
2010年6月26日 14:14

当方仕事の関係でVBAを覚えましたが、習得するのには非常に時間が掛かるというのが感想です。
毎日1時間ずつ勉強しても、習得に半年はかかると思います。
また、系統的に学習しないと使い物にならないので、
学習をしても初めの頃は思い通りの物が作れずに行き詰まる事も多いと思います。

ところでVBAを学習しようとされる目的は何でしょうか?
Excelはワーククシート関数が豊富ですので、これを覚えるだけでも色々な物が作れます。
また、即効性があるので関数を覚えればすぐに使えます。
家計簿程度ならばVBAを使わなくても関数を覚えれば十分に作れますよ。
SUM, IF, COUNT, INT, ROUND, ROUNDUP, ROUNDDOWN, &演算子, VLOOKUP などはご存知でしょうか。


やっぱりこれでは物足りない。どうしてもVBAがやりたいと言われるのならば改めてご質問ください。

ユーザーID:0552284333
必要は発明の母。
まさみ
2010年6月26日 12:30

ずばり上達のコツは「自分に必要なこと」をやること。
会社業務でもないのに売り上げの計算の練習問題やっても
あまり上達しません。

自分に必要なこと、たとえば家計簿とかそういうものを
作ってみて直していって少しづつ慣れていく、調べていく
のが近道と思います。

市販の参考書をそのまま使うことはしませんでしたね。
(一部のアルゴリズムを流用したりはしましたが)

ユーザーID:0853007955
職業プログラマーです
けん
2010年6月26日 12:23

自分の場合はスキルアップのためにと思っていろんな技術について
勉強する気ではいるのですが単なる勉強と思っていると余り進まないのが
現実です。
私にとって一番良いのは仕事で納期に追われることです。
そうすれば真剣になるので一気に身につきます。
(もちろん結構あせりますが)

もしその様な状況でなければ
「このような物を作る」という適度に達成が難しそうな目標を作って
それを完成するために試行錯誤をすることで上達すると思います。
ららさんがどのような職業かによって変わってきますが自分の仕事で
役立つものを作るのが一石二鳥ではないでしょうか?
もし専業主婦であれば「家計簿ソフトを作るぞ!」なんていかがでしょう。

ユーザーID:4851564272
 
最初へ 前へ 1 2 次へ 最後へ すべて トピ主のみ(2)

現在位置は
です