🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

6回答

830閲覧

自己流VBAの良し悪しについて

JunHira

総合スコア11

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

2クリップ

投稿2020/12/19 07:44

いまやっている自己流のVBAのつかいかた

処理用のExcelブックを用意してVBAを標準モジュールにいれておきます。

シートA:システムからダウンロードしてきたCSV型式ファイルを、項目名行は19行目、データは20行目からVBAをつかって貼付する
シートB:シートAを参照する関数を3行目にいれておく。VBAを使って、このシートの3行目の式を、データ開始の20行目から「シートAの最終行数」までコピーして、値貼付を実行する。シートAの数値を変換、集計等した結果がこのシートにできる。

シートC:シートBと同じように、参照する関数を3行目にいれて、同じようにVBAを使って最終行までコピーして、値貼り付けを実行・・・vlookup,index,match・・・を使って表引、sumifで集計、ピボットテーブルで重複削除などしてアウトプットのデータ型式にちかづける

シートD:要求されるフォーマットの型式にして、このシートを別ファイルに保存してアウトプットとする

お尋ねしたいこと

こんな自己流のやり方で、事務処理をやっています。
ただコピーして、値貼付するだけのVBAです。集計や最終アウトプットにも困ることはなくなりました。
ホントのVBAプログラムにくらべれば、たぶんスピードもおそいし、スマートでもないとおもいます。

これからもうちょっとスキルアップしていきたいとおもいますが、どんな勉強をしていったらいいのか、アドバイスいただけませんか?
オンライン型式のVBA講座を受講したりしてみましたが、自己流のほうが簡単に目的達成できてしまうので、もうひとつモチベーションがあがりません。

補足情報

書いていて、どんなアドバイスを望んでいるのか、自分自身につっこみをいれたくなりました。もっと自分自身進歩できるのではという思いがあります。ただの事務職で、若くはないので、すごい進歩は無理でしょうが・・・

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答6

0

これからもうちょっとスキルアップしていきたいとおもいますが、どんな勉強をしていったらいいのか、アドバイスいただけませんか?

ある程度の基本を習得したら、その先のスキルアップは、実践的なコードを書いて経験することでしょうね。

上級者の書いたコードを見て勉強するのもいいですね。
ここような質問サイトの回答者のコードや、WEB上にあるサンプルコードをチェックして、使えそうなものはないか常にチェックするとか。使えそうなものなら、コードの意味を解読してみると勉強になります。

現状の処理に使えそなものがあったら、改変して試してみるとか。

あと、このような質問サイトで自分でも答えられそうなものがあったら回答してみる、というのは確実にスキルアップにつながります。スマートでなかったり、間違っていたりすることもありますが、それを指摘されたりすると、そのことはしっかりと身について理解が深まります。
私自身のスキルアップはほとんどこれです。

投稿2020/12/19 09:01

hatena19

総合スコア34073

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

JunHira

2020/12/22 20:03

他の方の質問に回答できるようにもうすこしやってみます。
guest

0

コードを見てみないことには書き方の良し悪しはわかりませんが、現状動作に問題ないのであれば別に構わないと思います。
プログラムに絶対的な書き方はないですから。
で終わっちゃうと回答にならないので、これから先どうすべきか、いくつかプランを提案しておきます。

1.沢山コードを書く

基本はこれです。
とにかく沢山コードを書いていけば、自ずとレベルは上がっていくと思います。
コード化すべきロジックを考える速度も上がりますし、今までよりも簡潔に書けるようになったり、より安全な書き方ができるようになったりします。

2.他人のコードを参考にする(1)

オンライン型式のVBA講座を受講したりしてみましたが、自己流のほうが簡単に目的達成できてしまうので、

VBAの講座なんて受けたことがないのでどんなことが紹介されているのかはわかりませんが、まったく無駄なことは教えていないはずです。
講座で教えていることには何かしら理由があるはずです。
前述したように、より安全な書き方をしているのかもしれません。
どうしてこういう書き方をしているのだろうと考えてみるのもいいかもしれません。

3.他人のコードを参考にする(2)

teratailでVBAの質問に回答してみるのはいかがでしょうか。
回答しないにしても、自分ならこう回答する、というのを考えたあとに他の回答者の回答と見比べると参考になります。

投稿2020/12/21 02:43

ttyp03

総合スコア17000

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

JunHira

2020/12/22 20:01

回答ありがとうございます。これからも勉強はつづけるつもりです。
guest

0

解決済みのようですが、

いまやっている自己流のVBAのつかいかた

説明されているのは、エクセルの操作手順ですよね?

それをエクセル君に伝わるVBA語に翻訳したものが、「プロシージャ(≒作業手順書)」になります。

つまり、その手順にそって自動で実行できるようにしたものが、「マクロ」になります。

VBAも知る必要がありますが、
その手順、あるいは問題の論理的解法を言語化できることの方が重要です。

>ホントのVBAプログラムにくらべれば、たぶんスピードもおそいし、スマートでもないとおもいます。

説明された手順が、ほぼほぼ最適なので、ロジック的に改善できることはほとんどないかも知れません。
(気になるなら、コードを提示して添削してもらうのもあり?)
スマートかどうかは、
同じことを何度も書いてないか?
半年後の自分がそのコードを読んですんなり解読できるか?
という観点で、評価してみてください。
チームで開発しているのでなければ、自己流で十分です。
たま~に、有料で業者に作ってもらったコードを見ますが、
おかしなことを皆さん書いてますよ(エクセルVBA的に非効率な)。
結局、「結果が得られればよい」のでしょうけど(日常的にえくせるVBA を使ってないからでしょうけど)。
しかし、いずれメンテナンスを誰かに引き継ぐなら、「読みやすい」は、重要かと思います。

経験がものをいうと思います。たくさんコードを書いてたくさんコードを見るということを
するしかないと思います。

もうひとつモチベーションがあがりません。

とりあえずやりたいことが見つからないなら、
エクセルVBAの掲示板はここ以外にもいくつかあります。
それらを巡回して面白そうな課題を見つけてみることをお勧めします。

で、他の方の回答で答え合わせしてみることが勉強になるかと思います。
(回答として掲示板に書くかどうかはお好みで。)
回答者の皆さんも、あちこちの掲示板をめぐって情報収集されているようですよ^^

投稿2020/12/24 02:18

mattuwan

総合スコア2163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

オンライン型式のVBA講座を受講したりしてみましたが、自己流のほうが簡単に目的達成できてしまうので、もうひとつモチベーションがあがりません。

自力でVBA組める人が中級者未満が教える詐欺みたいな価格の講座を受講する必要なんて全くありません

書いていて、どんなアドバイスを望んでいるのか、自分自身につっこみをいれたくなりました。もっと自分自身進歩できるのではという思いがあります。ただの事務職で、若くはないので、すごい進歩は無理でしょうが・・・

現状で困ってないから求めるアドバイスが出てこないんです

ホントのVBAプログラムにくらべれば、たぶんスピードもおそいし、スマートでもないとおもいます。

速度にも困ってなければそのままで良いです。

という事で業務量を三倍に増やしてみてはどうでしょうか?または二日サボって一日集中して作業する。
これで時間が不足すればVBAの改善(フォーマットであったりVBA利用前後の業務フローであったり)箇所が見えてくるはずです

それでも何かアドバイスというのなら質問者以外の人もそのVBAを利用出来るようにフォームコントロールを用意してあげるのはどうですか?

投稿2020/12/19 08:00

hentaiman

総合スコア6426

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

JunHira

2020/12/22 20:09

おっしゃるとおりですね。もっと難しい仕事をしないと、もっとスキルをつけなければというモチベーションができませんね。そこから始めることにします。
guest

0

ありがとうございました。

投稿2020/12/26 05:28

JunHira

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

JunHira

2020/12/22 20:04

古いExcelなので新機能はつかえないです。つかえるようになったらやってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問