営業出身がマクロに挑戦〜その2〜
前回に引き続き、マクロを習得していっています。
今回もお世話になったのはドットインストールです。
VBAを粛々と学習
学習した内容は以下の感じ。
- Rangeオブジェクト
- Withステートメント
- プロパティ値の取得
- メソッドの実行
- 変数の宣言
- データ型
- 配列の宣言
- 条件分岐
- ループ処理
- 配列のループ(ここまで来ると難しい・・・・)
消化不良を起こしそうなので、あと一回かけてVBA入門は終了させます。
自分で書いたことはないのですが、他のプログラミング言語と考え方は一緒なんだなと思いました。
マクロを記録
学習進めていくうちに、マクロ側から操作をしてVBAに出力出来るということがわかりまして、その操作がどのような出力になっているのか確かめるのに使うといいよとあったのですが、基礎が分かったら、マクロを記録してからの調整のほうが目的に早く到達出来そうな予感がします。このあたりが初心者の右往左往感を感じ取って頂ければと。
ここでやってみたのは、
- 元データとなるシートにソートを掛け。
- その範囲をコピー
- 所定のシートにペースト
です。本来やりたいことの一部です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | Sub Macro1() ' ' Macro1 Macro ' ' ActiveWorkbook.Worksheets("ほげほげ").Sort.SortFields.Clear ActiveWorkbook.Worksheets("ほげほげ").Sort.SortFields.Add Key _ :=Range("B1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("ほげほげ").Sort .SetRange Range("A3:J65") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("A1:J65").Select Range("J65").Activate Selection.Copy Range("H1").Select Sheets.Add ActiveSheet.Paste End Sub |
とりあえず、マクロを記述してみて分かるのが、
Range(“J65”).Activate
こういった記述が不要であること。VBAサイドを少しでも理解していなかったら分からなかったことだと思うので学習効果はあったことが実感出来ます。
そして、所定のシートとしたいところも、アクティブなシートへペーストとなってしまっており、このあたりはマクロを記録しただけでは、判断出来ないことも理解出来るので、ファイル名、シート名を指定していく必要があるのでしょう。
まとめ
マクロを記録してから調整。
Author Profile
YUJI MEZAKI(代表取締役副社長)
代表取締役副社長をやっています。 越境ECとWebマーケの営業担当しています。 なんでもカリカリにチューニングして生産性あげるのが好きで勉強したビジネスフレームワークの記事多め。 趣味はPC自作で会社のWindowsデスクトップはほぼ自分が組みました。 1985年生/2008年早大卒/
SHARE