ホーム>スクールからのお知らせ>VBA

VBA

エクセルVBA:便利なショートカットキー

こんにちは、埼玉県草加市のパソコン教室・エクサパソコンスクール(東武スカイツリーライン草加駅徒歩3分)です。

今日はVBAで覚えておくととても便利なショートカットキーをご紹介しますね♪

VBAを教えられる講師がいる教室は本当に少ないです!

また 当教室の塾長は一番得意分野です‼

よくある「ビデオ授業」ではなく 少人数制の個別指導なので ご自身のスピードでレッスンできます。

もちろん急な予定が入った時も無料で振り替えOK!

仕事でどのような事をVBAで効率化したいなどご相談しながら 実務に必要なシステムを作成するお手伝いもできますよ!

生徒さんからは 今まで3日かかっていた仕事が3分で終わりましたと感謝のメールも頂いています‼ 

どうぞゆっくりとご相談してください‼

びっくりするほど仕事の効率化に繋がりますよ♪

 

 

              

ショートカットキー 内容
Ctrl + Space メンバー表示
Ctrl + ↑ 前プロシージャーに移動
Ctrl + ↓ 次プロシージャーに移動
Ctrl + Home モジュールの先頭に移動
Ctrl + End モジュールの最後に移動
Ctrl + G イミディエイトウィンドウの表示
Alt   + F11 ビジュアル ベイシック エディターの起動

 

エクセルVBA:マクロの処理速度を上げる(1)

おはようございます。東武スカイツリーライン草加駅徒歩3分のパソコン教室・エクサパソコンスクールです。

エクセルの業務をマクロで処理するようになると、おどろくほど効率化されます。

三日かかっていた仕事が三分でできるようになっても、慣れてしまうとその三分が長く感じられます。
もっと早くできないかと考え始めます。

いろいろとスピードアップの方法はありますが、今日は手始めに「ScreenUpdating」プロパティを紹介します。 

縦や横に長いシートを処理したり、複数のシートを切り替えながら処理したりすると、画面の書き換えが頻繁に起きます。
描画に時間がかかってしまうので、時間がかかってしまいます。
このプロパティを使って、画面の更新をしないようにして処理速度を上げます。

Application.ScreenUpdating = False  このように記述して画面の更新を止めます。
一連の処理が終わった後には、
Application.ScreenUpdating =True  画面の更新を再開します。
このように、セットで使用してください。

次の動画で、その効果を実感してください。

この動画で使用しているプロシージャのソースです。
※VBA初心者の方には難しく感じるかもしれません。エクサのVBA入門コースでしっかり学べば自分で簡単に書けるようになりますよ!

 

Sub Screen02()
    Dim Data As Long
    Dim i As Long
    Dim j As Long
    Dim startTime As Single
    Dim endTime As Single
    Dim processTime As Single

    Application.ScreenUpdating = False
   
    startTime = Timer      

   Range("A1").Select 

    For j = 1 To 10
        For i = 1 To 500
            Data = Data + 1
            ActiveCell.Value = Data
            ActiveCell.Offset(1).Select
        Next
        Cells(1, j + 1).Select
    Next 

    Application.ScreenUpdating = True  

    endTime = Timer

    processTime = endTime - startTime

    MsgBox Round(processTime, 2) & "秒かかりました"

End Sub

エクセルVBA:格子に罫線を引く

こんにちは、東武スカイツリーライン草加駅徒歩3分のパソコン教室・エクサパソコンスクールです。

VBA格子罫線のひき方のキャプチャー1

エクセルで選択した範囲に格子の罫線を引くことはよくあると思います。

右図のような操作です。

みなさん、おなじみの操作だと思います。

 格子に罫線を引くケースはVBAを使ってマクロを作るときにもよくあります。

左のような選択範囲に罫線を引いて右図のようにします。

VBA格子罫線のひき方のキャプチャー2
VBA格子罫線のひき方のキャプチャー2

 

これをマクロの記録でやってみましょう。

記録した結果のコードが下の図です。

VBA格子罫線のひき方のキャプチャー コード

 

とても長いコードですね。
ボタンを一つクリックするだけなのにこんなに長いコードが記録されてしまいます。

このコードはもっと短くすることができます。

描き直すと下のような簡単なコードになります。

 

VBA格子罫線のひき方のキャプチャー4

 

いかがですか、同じ「Borders]プロパティを使っていますが、マクロの記録では省略できるところまですべて記録されます。
この記録されたコードだけを見ていると、複雑そうでマクロで罫線なんか引きたくなくなりますよね。
実際には、この一行のコードだけでこと足りるのです。
ぜひ、覚えておいてほしいコードです。
覚えておかなくても、メモには取ってくださいね。

2017118182040.jpg

 

 

 

 

 

 

 

 

マクロ使いは魔法使い!! 

エクセルVBA:集計表作成依頼

こんにちは、東武スカイツリーライン草加駅徒歩3分のパソコン教室・エクサパソコンスクールです。

生徒さんから先日あったご依頼です。

2017114202147.jpg

 

 

下の左側のような、氏名と年齢と部署の入った社員の一覧表があります。これを下の右図(完成例)のように年齢別部署別に集計したいとのことでした。 最初は関数でできないか?というご質問だったのですが、「ちょっと難しいのではないか、マクロならできますよ。」と申し上げて作成しました。

20171020154628.png
2017102015478.png

 上図左側のリストから、まず集計するマクロと表の体裁を整えるマクロの二つのマクロを作りました。
「Syukei01」というマクロを実行した後の状態が下の左側の図で右側がそのコードです。

20171020155550.png
20171020155710.png

 次に「Syukei02」というマクロを実行すると、完成例のようになります。そのコードが下図です。

201710201600.png

部署別年齢別の人数を出すとかいうのであれば、関数やピボットテーブルで可能です。
この例のように、その名前を列挙し、さらに同じ属性の人の名前は一つのセルに入れるというのは関数では難しいのではないでしょうか。

皆さんもご興味があればぜひVBAを勉強されることをお勧めします。

 

エクサパソコンスクールVBAのページはこちら

エクセルVBA:VBEで最初にやっておきたい設定

こんにちは、草加駅徒歩3分のパソコン教室・エクサパソコンスクールです。

エクセルのマクロを使えば、業務をはるかに効率化できます。2017114202147.jpg VBAによる開発効率も少しでも上げたいものです。

まず、VBE(Visual Basic Edtor)の設定を変更しておきましょう。

エクセルの画面からAlt+F11を押して、VBEを起動します。
Alt+F11でVBEが起動というショートカットも覚えておきましょう。
VBEが起動したら、下図のように「ツールメニュー」から「オプション」をクリックします。

20171014163540.png
 

自動構文チェック(K)のチェックを外します。(下図)
ここにチェックが入っていると、コードを書いているときに前の文をコピーしようとしたりすると、エラーが発生し入力を中断させられます。
いちいち中断するので作業効率が落ち、イライラします。

20171014164527.png

次に「変数の宣言を強制する(R)」のチェックボックスをオンにします。
VBAでは変数を宣言せずに使うことができますが、宣言しておいた方がデバッグの効率が上がります。

下図のように設定してOKクリックしておきましょう。
一度オプションの設定をしておけば、それ以降有効です。

20171014165713.png

 

エクサパソコンスクールVBAのページはこちら

エクセルVBA:配列を使えば驚異的なスピードアップ

こんにちは、草加駅徒歩3分のパソコン教室・エクサパソコンスクールです。

エクセルのマクロ(VBA)を使えば、時間のかかっていた仕事をはるかに短時間で終わらせることができます。

2017114202147.jpg

いままでまる二日かかっていた集計作業など、ボタンを押すだけ、ものの三十秒もあれば処理することも可能です。

例として、アンケートの集計があります。
50問の設問があり、すべて5択で答えるようになっています。
回答者数は2,000名です。
集計するレコードは100,000レコードです。
これを各設問の回答ごとに合計数を集計します。

For Each ステートメントを使ったプログラムで集計してみました。

2017713131219.png
2017713131245.png

 コア i7のパソコンで、34.46秒かかりました。今までほぼ二日間、10時間以上かかっていた仕事が34秒で終われば驚異的ですよね。
「あー、マクロにしてよかった」と思う瞬間です。

 

次に配列を使ったプログラムを組んで実行してみました。

2017713131616.png
2017713131639.png

なんと、0.04秒で終了しました。約860倍の速さです。

エクセルのマクロもコーディングのやり方次第でさらに実行時間を縮めることができます。
0.04秒なんて、「ほんとに実行しているの?」というレベルですよね。

みなさんも、エクセルのVBA勉強してみませんか。

 

エクサパソコンスクールVBAのページはこちら

エクセルVBA:VBAは魔法のよう!?

こんばんは、草加駅徒歩3分のパソコン教室・エクサパソコンスクールです。

ほとんどのみなさんが業務で一番使っているアプリはエクセルでしょう。

教室ではよく、「エクセルでこんなことできませんか?」とか「こういう作業を定期的にやっているんだけど、もっとかんたんになりませんか?」という質問をお受けします。

エクセルの種々の機能や関数で解決できることもかなりあります。

処理するデータ量がば莫大で、定期的に同じ作業が発生し、いつも手作業で並べ替えしたり、フィルターをかけて必要なデータを取り出し、誤っているデータはないか、目で追いながらチェックしている。なんていうことになればそれはマクロ(VBA)の出番です。

何とかしてほしいとお願いされることもよくあります。

2017114202147.jpg

先日のご依頼です。

毎月、ホストから2万件超のデータが2か月分出力される。それをもとにエクセルで次のような資料を作りたい。

  1. そのデータから当月締めのデータを抽出する。
  2. 当月分を担当別のシートに落とし込む。
  3. 得意先ごとの読みの昇順でそれぞれ並べ替える。
  4. データの中には区分があるので、別シートに得意先別区分別の一覧を作成する。
  5. 担当毎に行見出しが得意先、列見出しが区分。縦横計を出力。得意先別にそれぞれの区分別売上の構成比を出す。
  6. 担当のシートの最終行には区分別の構成比も出力する。
  7. 1行目を見出しとして、A4横に横幅が1ページに収まるように自動調整して出力する。
20176720915.png

この前段階からお手伝いしたのですが、数時間から1日以上かかる業務がボタンを押して、1分弱待つだけになったとのことです。

抽出ミスや、計算ミスもなくなり、ミスをしないようにと気を使いストレスがたまることもなくなったそうです。

締め後、営業会議までに作らなければならないという時間に追われるプレッシャーからも解放されたそうです。

生徒さんからは、「先生の作るマクロは魔法のようです」というお言葉も頂戴いたしました。

エクサパソコンスクールVBAのページはこちら