エクセルマクロ・VBA達人養成塾 小川です。
http://www.exvba.com/vb/index.php
達人養成塾 小川です。
先日、「エクセルマクロ・VBA速習コース」を受講された方から、
VBAを覚え立てのころにありがちな質問を受け付けました。
ちょっと、シェアしますね。
Rangeが一つのセルの場合はうまくいくのですが、
Range(“A1:G100”)
の場合「G100」の100の値を変数で指定する方法が判りません。
ご教示の程宜しくお願い申し上げます。
とのこと。
VBAを覚え立ての時期は、こういう問題でつまづきがちですね (^^;
で、どうするのかというと。
僕がこういうときにするアドバイスは、
「面倒でも、こまごまとしたステップを踏みながら、
だんだんマクロを作っていくこと!」です。
いつも、セミナーで言っていますが、
“Nothing is particularly hard if you divide it into small jobs.”
です。 (by Henry Ford)
ということで、やってみます。
↓
“A1:G” & “100”
としたところで、いったんテストします。
そして、OKだったら、
“A1:G” & “100”
↓
“A1:G” & hensu
としたところで、いったんテストします。
それでOKなら、完成!という感じです。
みたいなものを処理する場合なら
“A100:G100”
↓
“A” & “100” & “:G” & “100”
としたところで、いったんテストします。
そして、OKだったら、
“A” & “100” & “:G” & “100”
↓
“A” & hensu & “:G” & hensu
という感じですね。
手順を踏んで、ちょっとづつ直していってください。
僕はそんなことしないでも、一瞬でできます。
でも、マクロ覚え立てのころは、やはり面倒でも手順を踏んでやっていました。
プログラミングで、特に、文字列操作で引っかかっている人を見ていると、
高校2年生ごろまでの自分を思い出します。
数学の計算問題とか、苦手だったんですよ…。もう、ムチャクチャ。
当時の僕は今よりも横着な人間で、計算問題とか、
きちんと紙に書いて計算やるのが大嫌いでした。
面倒くさいし。
頭だけで考えても、なんとか分かりそうだし。
とか、そんな感じ。
でも、頭だけで考えようした問題は、ほぼ確実にどこかを間違えてしまい、
不正解になっていました (T_T
それで、高校3年生の春くらいに、気がついたんですね。
こりゃ、ダメだ…。と。
高校の中間・期末試験で、計算問題は3個に1個以上の確率でバツがついて返ってくる。
文章題も、計算間違いで落としている問題がボロボロある。
実は、小学校のころから、僕はそういう感じでした (^^;
でも、高校3年生の春くらいに、気がついたんです。
「そうか、『頭だけで考えようした問題は間違えてしまう』のであれば、
逆に、どんなにベタで単純な計算でも、いちいち筆算してしまおう。」
それで、数学、物理、化学の問題を解くときには、
とにかく、計算は、計算用紙に、ガタガタ、ガタガタと書いていくようにしました。
3 + 5 x 2
くらいの計算でも、
3 + 10
という式に直してから、
13
という答えを出すくらい。
ちょっとでも頭が「複雑..」と感じることがあれば、
ぜったいに暗算しない、と決めてやりました。
そうしたら、おもしろいくらいに、計算問題を間違えなくなりました。
そりゃ、そうですよね。
でも、そのレベルがまた…。
どのくらいかというと、高校3年生のときの高校の数学の先生よりも、
計算問題については、得意になってしまったくらいです。
(僕のほうが、早くて正確になっていました ヾ(´ー`)ノ )
で、そうすると思わぬ派生効果が。
文章題を解くときにも、エラく正解率があがるようになりました。
なにしろ、
「この問題の言わんとすることを、計算式にさえしてしまえば、
その式がどんなにグチャグチャしたものだったとしても、
絶対に計算しきって正解できる!」
という自信がついたからです。
計算力にムチャクチャ自信があるんで、その分、
文章題の言わんとすることのほうに意識を集中できるようになったんですね。
計算力をつけたことが、単に、「文章題」を解くときの計算力が向上しただけでなく、
文章のほうにより意識を集中できるようにしてくれたのです。
僕は、高校3年生のときに急に成績が伸びて、最終的に、
「現役浪人あわせて7年ぶり13人目」
「現役では、開校45周年にして、42年ぶり3人目」
という極めてレアな形で東大に現役合格できた理由のひとつは、
徹底して、計算力をつけたことでした。
当時の僕は10代で、今は30代ですが。
こういう課題にであったときにやっていることは同じだな、と感じます。
「文字列を加工するだけの問題になれば、あとは正解しきれる」
というのも、同じです。
そういう自信が、VBAでプログラムを書くとき、より具体的な課題について考え抜く力につながっていきます。
そして、
「文字列を加工するだけの問題になれば、あとは正解しきれる」
というところにいたるには、
“A1:G100”
↓
“A1:G” & “100”
↓
“A1:G” & hensu
みたいに、ちまちまと細かい変更をくり返しながら、
ひとつずつ、確実に正解していく手間を惜しまないことです。
あなたのプログラミングスキルの本当のブレークスルーは、そこから起こります。