Excel VBAで初心者が躓くポイント解説
てんこです。Excelで始めるプログラミング講座その②では、プログラミングで正規分布の成り立ちを解説しました。コード自体は簡単なのですが、複合的な知識が必要になるため、結構難易度高かったんじゃなかろうかと、反省しました。
と言うことで、今回は初心者がVBAを諦めてしまうポイントを紹介しようと思います。プログラム走らせていちいち止まってると、やる気が萎えますからね。
【名前に変数を使う】
➡ボタンポチっとで全て終わらせるためには、データ参照先のエクセルのファイル名を変数を使って指定する必要があります。例えば参照先のファイル名が「4月実績.xlsx」で、マクロを保存しているファイル名が「4月マクロ.xlsm」だったら、以下のような感じです。
dim tuki as string '文字列はstirng
dim name as string
tuki = thisworkbook.name '4月マクロ.xlsmの名前をtukiに代入
tuki = left(tuki, 2) '「4月」取り出す。
tuki = Replace(tuki, "月", "") '1月から9月の場合に数字だけ除外する
name = tuki & "月実績.xlsx"
&の両サイドには半角スペースが必要なので注意。
【エクセル関数を使う時の色々注意】
➡VBAではエクセル関数が使えますが、エクセル上で使用する時と勝手が違います。
①殆どの関数は、頭に「worksheetfunction.」を付ける必要がある。
②例えばvlookupで、参照データが見つからずエラーしたら止まる。iserror使っても無理。
③範囲指定する関数の場合、範囲はrangeで指定する必要がある。
rangeの範囲を変数で変えたいときは、以下の感じにすると良いです。
dim i as long '整数はlong
dim goukei as double '小数を含む場合はdouble
i = 1
goukei = sum(range(cells(i, 1), cells(i+3, 4))) 'A1からD4を足して、goukeiに代入
【vlookupをVBAで使うコツ】
➡エラーを回避する技もありますが、エラーした時に何か処理したい事もあると思います。そんな場合、私は以下のようにして、セルに直接数式を打ち込みます。
dim name as string
name = "名前"
cells(1, 1) = "=if(iserror(vlookup(""" & name & """ , B1:C10, 2, false)) = true, ""x"", ""o "")"
if cells(1, 1) = "o " then
Msgbox "名前ある"
else
Msgbox "名前ない"
endif
上記のように書くと、セルB1からB10に「名前」と入力されているセルがある場合には「名前ある」というメッセージボックスが表示されます。
ここでのポイントは、VBAでは""で囲った間は文字列として認識されますが、セルに直接数式を入力するとき等で数式中に"を使いたい場合、"を文字として認識させる場合には""のように連続させる事です。
【rangeを使うときの注意】
➡例えば、デスクトップにあるエクセルファイル「練習.xlsx」を開いて、一番左のシートのA1からA10の値を持ってきたい時は以下のように書きます。
dim wb as workbook
workbooks.open ("C:¥user¥Desktop¥練習.xlsx")
Set wb = Activeworkbook '開いたワークブックはアクティブになるので、ワークブック名をwbとして保存しておく。
Thisworkbook.Activate '元のエクセルをアクティブにする。
Range("A1:A10").value = wb.Sheets (1).Range("A1:A10").value
ここで大事なのは、別のエクセル同士でやり取りする場合にはワークブックとシートの指定をする必要があります。マクロを起動しているワークブックは「Thisworkbook」でOKです。また、rangeの後に.valueを入れておかないと、値が上手く入りません。
【終わりに】
どうでしょうか。VBA初心者が躓いて嫌になるポイントは大体網羅していると思います。ありがちなのは名前ですね。一文字でも違ったらエラーですから。皆さんも、上記がスラスラ出来るようになったら、エクセルの単純作業はほぼ無くせますので、精進してください。後の細かい点は思い付いたらまた記事にします。それではまた。
辛いとき、子供の頃聞いた歌に背中を押される
てんこです。てんこ式健康術も、あと何個か記事にしたらひとまず終わりにしようかと思っています。本1冊くらいになったでしょうか。誰かに本当に伝えたい事をまとめたら、こんなものですかね。ダラダラ続けて薄まるのも嫌ですし。伝わらなくなると思うのです。これからはカクヨムで小説でも書くことにします。右のリンクから飛べるので、暇潰しにどうぞ。まだ一話だけですが。(笑)
それで、今回はズバリ「歌」がテーマです。精神編の自己研鑽で色々なメディアから厳選して紹介しましたが、歌が抜けてるな、と。特に子供向けの歌は良いです。大人が子供に向けて、こうであって欲しいという、綺麗な理想が歌われる事が多いです。以前も言いましたが、良いじゃないですか、理想。そこに至れなくても、それを目指す心が大事です。常に心がければ、やがて辿り着けます。
てんこ式健康術を実践することで人生バラ色間違いなしですが、それでも生きていく上で、他人と関わる必要がある以上は嫌なこともあります。そんなときに私を前向きにする歌を紹介します。
【ずばり、デジモンのOPと挿入歌】
デジモンって知ってますか?元々はたまごっちのパクりみたいな感じのオモチャからスタートして、アニメ化しました。わりと最近、初代の続編が映画化されてましたね。私が子供の頃、丁度アニメでやってました。内容的には、デジタルワールドに吸い込まれてしまった子供たちが、その世界を救う物語で、1000%子供の成長を描いています。従って、OPや挿入歌もそれに添った歌詞になってます。「バタフライ」が有名でしょうか。と言うことで、中でも私のお気に入りは以下になります。それらの歌はDIGIMON HISTORY 1999-2006 All The BestというCDで聴けます。
・ButterーFly 和田光司
「Stayしがちなイメージだらけの頼りない翼でもきっと飛べるさ」
➡ご存知、初代デジモンアドベンチャーのOPテーマ。自信はないだろうけど大丈夫だから進んでみ?って感じの、そっと背中を押してくれるような、見守ってくれているような、優しい歌ですよね。
・brave heart 宮崎歩
「逃げたり諦める事は、一瞬あればできるから歩き続けよう」
➡デジモンが進化する時の挿入歌。燃える。Butter-Flyに比べると、こちらはガンガン行こうぜって感じ。頑張れば何だってできるんだぜ、っていう歌。
・ Break up 宮崎歩
「誰でもないさ、君の番だよ。逃げ出しちゃいけない」
➡デジモンアドベンチャー02の挿入歌。近頃は辛かったら逃げていいんだよ、とか軟弱な思考が多く見受けられますがそんな訳ねぇだろ。と思います。鬱病の人はまずは健康になってからの話になりますが、健常者がそんなんでどうすんねんと。どんどん、楽な方へ楽な方へ。皆そんなに楽したいんですか。人生、頑張らないと何も面白くないですよ。怠惰で得られる満足なんて、達成感に比べたら屁みたいなものです。そんな頑張れないあなたを頑張れるあなたに変えちゃうのがてんこ式ですので、今のままではダメだと思えているうちに、健康術の物理編からスタートしてください。
【真剣に生きるための熱が貰える音楽】
上記は子供に向けた歌ですので単純に前向きになれますが、もう少し熱がほしいときには、葛藤を感じられるような歌も良いです。あらゆるメディアに言える事ですが、流行りの物とは、80%の人間が80%満足する代物の事です。80%では貴方に火は灯りません。インターネットが発達していますから、10%の人間が100%感動するような物を見つける方が有意義だと思うのです。誰かに話を合わせるためとかじゃなくて、貴方が満足することが大事です。私にとって熱が欲しいときの歌手はpegmapです。
・渦 pegmap
「ガラス戸を蹴り破って、汚い物は放り出したって無駄さ。変われないぜ」
➡なんでしょうねぇ。この歌だけじゃないんですけど、この歌手の歌が凄い響きます。音楽に真剣に向き合ってて、それでも音楽だけで成功できない葛藤とか、そういったものの叫びというか。とにかく、半端ない熱を感じます。ガチで本気で何かに取り組んだ人間だけが出せるエネルギーに溢れてます。今の世の中、大半の人にとっては多分暑苦しいだけで、大して流行らず解散してしまいましたが、少なくとも私には届いています。私もいつかそういう作品を出したいなと思っていて、ブログ始めたり、小説を書き始めた訳です。流石に、今の生活を捨てる勇気はないですが。子供いるし。仕事はアホみたいに超意識高い系でバリバリなんですけどね。
と言うわけで、前向きになれる歌の紹介でした。明日は小説の続きを書こうそうしよう(笑)。それではまた。