【Excel】【VBA】初心者向け解説~VBA100本ノック 1本目~【ゆっくり解説】

わちょんのゆっくりIT
29 Dec 202009:27

Summary

TLDRこのスクリプトは、ExcelのVBAを使用してシート間のデータをコピーするプロセスを説明しています。ビデオでは、マクロの記録とVBAのコードを比較し、VBAの柔軟性と実践の重要性を強調しています。問題は、Sheet1のA1からC5の範囲をSheet2のA1以降にコピーすることです。スクリプトでは、Selectメソッドの禁止と、列幅のコピーに関する問題が触れられており、シンプルさとコードの読みやすさを重視することが示唆されています。最後に、初心者向けにVBAの学習方法が提案されており、チャンネル登録を呼びかけています。

Takeaways

  • 📘 VBAの学習には実践が肝要です。単なる知識では実戦での使いこなしが難しいとされています。
  • 🚫 問題の条件でSelectメソッドは禁止されていたため、マクロの記録だけでは問題を解決できないことがわかります。
  • 📋 Excelのシート操作をする際には、オブジェクト変数を用いることで、より柔軟で効率的なコーディングが可能になるというアドバイスがあります。
  • 💡 VBAのコードは、問題解決に必要なスタート地点とゴール地点をイメージし、シンプルさを重視することが推奨されています。
  • 🔍 解説では、同じ問題に対する3つの異なる解答方法が提示されており、それぞれの方法の理解が深められます。
  • 🎨 列幅のコピーに関する問題が指摘され、問題文に列幅はコピーしなくても良いと明記されていたことが重要です。
  • 📝 コードの書き方には個人差があり、最適な方法は状況や好みによって異なるとされています。
  • 🛠️ 初心者には、マクロの記録以外のVBAの使い方が難しいと感じられるかもしれませんが、ビデオやサイトを通じて学ぶことが推奨されています。
  • 📈 問題解決の過程で、コードを実行しながら1行ずつ進めて問題点を特定し、解決策を見つけることが大切です。
  • 📊 今回のVBAの100本ノックは、実践的な問題に取り組むことで、自分のスキルを向上させることができると示唆しています。
  • 🔄 最後に、チャンネル登録を呼びかけ、今後も興味を持っていただけることを期待しているというメッセージがあります。

Q & A

  • 動画で紹介された「VBA 100本ノック」とは何ですか?

    -「VBA 100本ノック」とは、VBA(Visual Basic for Applications)を使って100個の問題を解くことを目指したプロジェクトのことです。VBAは、Microsoft OfficeのExcelなどにあるプログラミング言語で、自動化やカスタマイズに使われます。

  • マクロの記録とVBAプログラミングの違いは何ですか?

    -マクロの記録は、Excelの操作を記録して自動化することができる機能ですが、柔軟性が低いです。一方、VBAプログラミングは手動でコードを書くことで、より高度な自動化を実現できます。マクロは記録された操作を繰り返しますが、VBAは複雑なロジックも記述できます。

  • 動画で説明された「Select メソッド禁止」の課題とは何ですか?

    -「Select メソッド禁止」の課題では、VBAのSelectメソッドを使ってセルを選択することは禁止されています。代わりに、WorksSheetオブジェクトやRangeオブジェクトを直接操作して、セルの範囲を指定する必要があります。これは、コードをより効率的で簡潔に保つためのルールです。

  • オブジェクト変数とは何ですか?

    -オブジェクト変数は、Excelのオブジェクト(例えば、Worksheet、Rangeなど)を参照する変数です。オブジェクト変数を使うことで、コードが読みやすくなり、また、オブジェクトを繰り返し参照する際にパフォーマンスが向上します。

  • 動画で使われた「トゥデイ関数」とは何ですか?

    -「トゥデイ関数」とは、VBAのToday関数の誤読です。Today関数は、現在の日付を返すVBAの関数です。動画では、その関数を使って、日付をセルに入力するという説明がありました。

  • 列幅をコピーしない理由は何ですか?

    -列幅をコピーしない理由は、問題の条件に「列幅はコピーしなくても良い」と明記されていたためです。また、VBAでセルの内容をコピーする際には、デフォルトで列幅はコピーされないため、手動での操作が不要です。

  • 動画で説明されたVBAの書き方の違いはなぜ存在しますか?

    -VBAの書き方の違いは、プログラマーの好みや経験、また問題に対する解き方によって異なります。自動化のプログラムはスタート地点とゴール地点が決まっており、その間の道のりはプログラマーによって様々です。シンプルで読みやすいコードを書くことが、他の人がコードを理解しやすくするために重要です。

  • 動画で提案された学習方法は何ですか?

    -動画では、マクロの記録以外のVBAの使い方を知りたい人に対して、動画やサイトでの学習を提案しています。また、本やサイトで学ぶことで、より深くVBAを理解し、実践的なスキルを身につけることができます。

  • 動画で使われた「戦闘せる」とは何を意味しますか?

    -「戦闘せる」は、動画の文脈から推測すると、「貼り付ける」の誤読または方言表現の可能性があります。VBAのコードでセルの範囲をコピーし、別のシートに貼り付ける操作を意味していると解釈されます。

  • 動画で紹介されたVBAのコード例は何を目的としていますか?

    -動画で紹介されたVBAのコード例は、ExcelのSheet1のA1からC5の範囲をSheet2のA1以降にコピーすることを目的としています。これはVBA 100本ノックの1つとして、VBAでのシート操作を学ぶための課題として提示されています。

  • 動画で触れられた「シンプルさ」とは何を意味しますか?

    -「シンプルさ」とは、コードが簡潔で読みやすい状態を意味します。シンプルなコードは、他の人が理解しやすくなり、またバグが発生しにくいため、メンテナンス性も高まります。動画では、初心者がコードを書く際にはシンプルさを意識することが重要だと強調されています。

Outlines

00:00

😀 Excel VBA 100本ノックの挑戦

この段落では、かゆっくり霊夢がExcelのVBAマクロを使って100本ノックを挑戦することを紹介しています。彼女は、プログラミングのレベルが高くないと自覚しており、問題解決の過程が大切だと述べています。また、VBAを習得するには実践が必要だと強調し、真髄様のサイトとTwitterを紹介しています。最初の問題は、特定のセル範囲を別のシートにコピーするというもので、かゆっくり霊夢はマクロの記録を使わずにVBAコードを書く方法を模索します。

05:03

😓 VBAでのシート操作と問題解決

かゆっくり霊夢は、最初の問題を解く過程でいくつかの課題に直面しています。彼女は、列幅がコピーされないことに気づき、問題文を再度確認することで、列幅をコピーする必要がないことを学びます。その後、彼女は解説を見て、他の人の解答方法を比較し、シンプルさの重要性を理解します。彼女は、解答を試し、自分のコードとの違いを学び、シンプルで理解しやすいコードを書くことが大切だと結論づけます。最後に、彼女は初めてVBAを学ぶ人にとっての難しさについて語り、今後も興味を持ってもらいたいと述べています。

Mindmap

Keywords

💡かゆっくり霊夢

かゆっくり霊夢は、日本のVTuberであり、このビデオのナレーターや登場人物の1人です。彼女はExcelの自動化を通じて、観客にVBA(Visual Basic for Applications)の活用方法を教える役割を果たしています。

💡魔理沙

魔理沙は、かゆっくり霊夢とともにこのビデオで登場し、ExcelのVBAを使用したタスクに挑戦しているキャラクターです。彼女の名前は、問題解決プロセスを通じて繰り返し提唱されます。

💡VBA

VBAは、マイクロソフトのExcelなどのOffice製品で使用されるプログラミング言語です。ビデオでは、かゆっくり霊夢がVBAを使用してExcelのタスクを自動化する方法を説明しています。

💡マクロ

マクロは、Excelで一度に複数の操作を自動化できる機能です。ビデオでは、マクロの記録とVBAのコードを使用してタスクを自動化するプロセスが説明されています。

💡シート

シートは、Excelのブック内の個々のテーブルのような構造であり、データの整理と分析に使われます。ビデオでは、シート1からシート2へのデータコピーのタスクが中心的なトピックとなっています。

💡セル範囲

セル範囲は、Excelのシート内の特定のセルを指します。ビデオでは、セル範囲の指定がデータのコピーや移動の重要な要素として触れられています。

💡数式

数式は、Excelで計算を実行するために使用される式です。ビデオでは、数式が含まれているセルをコピーする際の注意点として触れられています。

💡書式

書式は、Excelのセルに適用される見た目やスタイルです。ビデオでは、書式がデータと一緒にコピーされるかどうかが問題となっており、その選択肢が説明されています。

💡オブジェクト変数

オブジェクト変数は、VBAで使用され、Excelのオブジェクト(例えば、シートやセル)を参照する変数です。ビデオでは、オブジェクト変数がExcelの操作をより柔軟に行う方法として紹介されています。

💡シンプルさ

シンプルさは、コードを簡潔で理解しやすく保つことの重要性を意味します。ビデオでは、かゆっくり霊夢がシンプルなVBAコードの利点について語っています。

💡コメント

コメントは、VBAコード内に記述され、コードを説明するテキストです。ビデオでは、コメントがコードの理解を助けるだけでなく、問題解決プロセスを通じて重要な役割を果たしていると示されています。

Highlights

かゆっくり霊夢がVBAの100本ノックに挑戦し、Excelの真髄様のサイトを参考にする

マクロの記録ではなく、VBAを直接使用してシート間のデータをコピーする問題に取り掛かる

Selectメソッドは禁止され、VBAのオブジェクト変数を使用してシートを操作することが求められる

VBAでシートを変数に定義し、その変数を使用してデータを操作する方法が解説されている

問題の説明を繰り返し読み、範囲と条件を理解することで、VBAのコードを書くための基礎を身につける

VBAのコードを書いて、シート1から2へのデータコピーを試みる

列幅がコピーされない問題に気づき、問題文の条件を再確認する

解説を見ることで、自分のコードと提供された解答のコードの違いを理解する

VBAの書き方には個人差があり、シンプルさと理解しやすさが重要であると気づく

解説ビデオでは3つの異なる解答コードが提供され、それぞれを試してみる

初心者にはVBAの基本的な使い方を学ぶことをお勧めし、自分の苦い過去を共有して励ます

VBAを学ぶ際には、実践を通じてスキルを身につけることが肝心であると強調する

真髄様のTwitterもチェックしてみることを提案し、面白いコンテンツを共有する

初心者がVBAを学ぶ際には、動画や書籍を活用して理解を深めることを提案する

チャンネル登録を呼びかけ、視聴者のサポートを感謝する

かゆっくり霊夢がVBAの学習者に対して励ましの言葉を述べ、今後も興味を持ってもらいたいと話す

Transcripts

play00:00

かゆっくり霊夢ですよろしくお願いします

play00:04

魔理沙ですよろしくね今日は excel の真髄様のサイトをお借りして vba

play00:10

100本ノックをやってみるわ

play00:12

vba 100本ノックすごそうですねああああ

play00:16

めちゃくちゃすげーぞ正直私のレベルじゃ分からない

play00:20

問題もあると思うわえそれでいいんですか

play00:23

まあ vba て回答と合ってるか合ってないかより途中の考え方の方が大事だったり

play00:29

するから

play00:29

もし見て下さった人は一つの考え方程度に捉えて頂けますと幸いです

play00:35

vba を習得するには実践あるのみ

play00:38

そのまま読み上げましたね

play00:40

えっ知識だけでは実戦で使いこなせません

play00:43

その通りですね

play00:45

そういや真髄さん twitter もやってて面白いからそっちもチェックしたほう

play00:49

がいいぞ

play00:50

ぜひ見てみてください

play00:53

じゃ前置きはこの辺にして早速問題未定稿かなぁ

play00:57

解けるかなぁ頑張ってください

play01:02

1本目はヘルのコピー砂

play01:05

コピーぐらいならできますかね

play01:08

運動だろうなぁとりあえず問題読みます

play01:13

出題 sheet 1の a 1から c 5のセル範囲を sheet 2の a 1

play01:17

から c 後にコピーしてください

play01:19

あこれくらいなら私にも出来そうですよ

play01:23

マクロの記録で1回こんな感じの作業を自動化したことありますあいや待て早まるな魔

play01:29

理沙

play01:30

さすが真髄さんいきなり大多数のにわか vba あーをふるい落としにかかってるな

play01:36

どういうことですか下の文章に注目だぜ

play01:40

ただし select メソッドは禁止私には分かりませんが記録じゃダメってこと

play01:46

ですかね

play01:47

あああああああダメだな1問目でこれは

play01:50

記録だけじゃダメだぞっていうメッセージなのかな

play01:53

まあとりあえずやってみるわ

play01:59

play02:01

[音楽]

play02:04

よいしょ

play02:06

よしまずはシートににコピーってことなのでシートにを作ります

play02:11

shift + f 11 c とにが出来ましたね

play02:15

お次は

play02:17

[音楽]

play02:19

a 1から c 後にとりあえず何か入れようか入れたい範囲を選択してなんか文字を

play02:25

入れてコントロール enter

play02:31

sheet 1のこいつらがシートににコピーされればいいんだな

play02:34

あちょっと待って数式も書式持ってところ見落としてたわ

play02:39

数式はとりあえずトゥデイ関数でいいかな b 列に打ち込みます

play02:45

今日はクリスマスもうすぐ今年も終わりですね

play02:48

寂しいな c 列は書式を変えとこうおーると

play02:52

hh で背景の色を変えれます魔理沙色ですね

play02:57

よし準備は整ったかなこいつらがシートににコピーできれば ok ですね vba

play03:04

書いていきましょう

play03:05

オールとプラス f 11

play03:09

vbe が開きましたね

play03:11

とりあえず標準モジュールを挿入

play03:14

拡大します

play03:16

一番上にはとりあえずオプションエクスプリ嫉妬

play03:20

サブの後に名前を追加えちょもうついていけないんですが

play03:25

記録しか使ってなかったらこのあたりでギブアップかもな

play03:29

私も最初記録でできた気になってたんだけど今思うとマジでウンコだったわ

play03:35

そうなんすかまあ今でもうんこだけどな今回のようなシート操作をする時は私は

play03:42

オブジェクト変数を使うようにしてるわ

play03:44

オブジェク

play03:45

と変数は奥が深いんだけど使ってるところを見たらなんとなくはイメージできるんじゃ

play03:50

ないかな

play03:52

ふむ今のところさっぱりですがとりあえずどうやって使うのか見ときますこれで ws

play03:59

1

play03:59

ws にがワークシートですよって定義できました

play04:03

次にセットを使って定義した奴らにに変数を格納します

play04:07

なんでそんなめんどくさいことをまあ今日ぐらいの内容なら使うまでもないんだけど

play04:13

今後処理が長くなってきた時なんかに使わないとちょっとしんどいんだよな

play04:18

はぁ言ってることがほとんどわかりません

play04:22

今日はとりあえず見ててくれたらいいかな

play04:27

ここからがやっとコピーの処理だな

play04:30

前置きがこんなに長いなんて問題文もっかい見ます

play04:37

シート1から2にコピーですね

play04:39

[音楽]

play04:42

sheet 1つまり ws 市レンジ h から c 5

play04:47

[音楽]

play04:50

goo

play04:52

続いて copy メソッド

play04:56

その後に貼り付け先の範囲

play04:59

sheet 2に貼り付けたいからこんな感じかな

play05:02

[音楽]

play05:06

貼り付け先は a 1で ok です

play05:09

[音楽]

play05:11

play05:12

よし多分これでいいんじゃないかな

play05:16

ちなみに私はもう頭がパンクしそうです

play05:20

1問目からすごくいろいろ詰まってると感じたぜ

play05:24

見やすいようにインデントもしとこうカタカナが多い

play05:29

よしじゃあ実際に動かしてみよう

play05:32

sheet 1のこいつらがシートににコピーされれば ok だな

play05:36

[音楽]

play05:39

f 8で1行ずつ実行しますね

play05:43

[音楽]

play05:45

play05:48

play05:50

[音楽]

play05:52

あってんのかなーこれ分からんのかい

play05:59

あそういや列幅がコピーされてないんだな

play06:02

問題は b 列ですね

play06:05

コピーを実行しても列幅はコピーされないから

play06:08

b 列に数式入ってたら ok だな

play06:12

[音楽]

play06:15

アーちゃんと数式は入ってますねすごいです

play06:18

play06:19

ま問題文に列幅はしなくて良いって書いてたから

play06:24

まぁこれであってるでしょうよかったです

play06:28

解説見てみましょう

play06:31

[音楽]

play06:33

書き方は全然違いますね

play06:36

これってどういうことなんでしょうう霊夢のと何が違うんでしょう

play06:40

なるほど私のはシートを変数にしたんだけどこの問題ぐらいならそれをするまでもない

play06:46

って考えかな

play06:48

うんそうなのか答えの方が簡単そうに見えるな

play06:52

なんかれいむのはやたら難しく書いてて優しくないな

play06:56

うそんなー解説すごい丁寧だな

play06:59

コピー先は戦闘せるだけで良いって書いてくれてるな

play07:03

そしてこれ解説も3パターン書いてくれてるな

play07:07

答えのコードも試してみます霊夢のといいなんでそんなに書き方がいっぱいあるんだ

play07:13

vba の書き方ってじき歯人によって本当にバラバラなんだよ

play07:18

いわゆる自動化のプログラムだからスタートとゴールがあるイメージかな

play07:23

東京をスタートして大阪がゴールとした時

play07:26

新幹線でいく人もいれば飛行機で行く人もいるそんな感じかなーなるほど

play07:33

コールは同じ

play07:33

でも好みによって家庭が違うんですねああ何が正解ってのはその時々によって様々なん

play07:40

だけど

play07:41

一つだけ意識した方がいいのはシンプルさだな

play07:45

シンプルラッキの例で言うと理想は新幹線とか飛行機なんだけどたまにいるんだよバス

play07:51

に乗って乗り換えてと方挟んでまっ

play07:53

電車に乗るような奴がなるほど過程がぐちゃぐちゃなんですね

play07:58

シンプルに書かないと初めてコードを見た時に他の人がわかりにくいんだよなるほど

play08:04

です

play08:05

さて答えのコードも一度試してみますね

play08:08

サイトの一番下にあったやつをコピーさせてもらったは f 8で1

play08:13

8ずつ実行していきます

play08:15

一番下の行で止めてみるわ

play08:18

[音楽]

play08:21

ココスな

play08:22

これを忘れるとコピーの点検が残りますって書いてるけどそれを確認します

play08:28

シート位置を見てみるわ

play08:31

[音楽]

play08:32

こんな感じだなあと1行進めると消えます

play08:36

消えましたねさて今日はこれぐらいにしようと思うけど

play08:41

マクロの記録しか行ったことがない人にとっては既に結構難しかったんじゃないかな

play08:47

はいほとんどわかりませんでしたそもそも記録以外の使い方すら分かって

play08:52

ません全くの初めての人は使い方とかは動画を見るのをお勧めします

play08:58

本とかサイトとかで勉強して妥協した経験があるので苦い過去ですねなんとなく使い方

play09:05

もわかるように

play09:06

今何をしたとかも入っていこうと思うから興味がある人はこれからもよろしくお願いし

play09:11

ます

play09:12

play09:12

それでは今日はご視聴いただきありがとうございましたチャンネル登録もよろしくね

play09:19

[音楽]

play09:25

goo

Rate This

5.0 / 5 (0 votes)

Related Tags
かゆっくり霊夢ExcelVBAマクロプログラミング初心者向け実践入門問題解決コード解説操作デモンストレーション学習コミュニティクリエイティブ
Do you need a summary in English?