エクセルマクロ・VBA達人養成塾 小川です。
http://www.exvba.com/vb/index.php
昨日、あるところで、エクセルVBAについて人に教えていたときにした話。
たとえば、B列のセルB2~B11に以下のデータが並んでいる。
米子 美和
津 篤史
五日市 加奈子
静岡 威宏
呉 早希
高知 昌浩
兵庫 早希
神戸 智宏
高岡 範夫
北海 尚広
そのとき、C列、D列に、苗字、名前を分割して入れるとする。
つまり、こんな感じになる。
米子 美和,米子,美和
津 篤史,津,篤史
五日市 加奈子,五日市,加奈子
静岡 威宏,静岡,威宏
呉 早希,呉,早希
高知 昌浩,高知,昌浩
兵庫 早希,兵庫,早希
神戸 智宏,神戸,智宏
高岡 範夫,高岡,範夫
北海 尚広,北海,尚広
(便宜的に、セルの区切りをカンマで表現しています)
こういうことをするマクロを作ると、以下の感じになります。
Sub nantoka()
Dim mn As String
Dim ku As Long
Dim cnt As Long
For cnt = 2 To 11
mn = Range(“B” & cnt).Value
ku = InStr(mn, ” “)
Range(“C” & cnt).Value = Left(mn, ku – 1)
Range(“D” & cnt).Value = Mid(mn, ku + 1)
Next
End Sub
このとき。
上の行から順番に書いている人がいます。
Sub nantoka()
って書いて。
Dim mn As String
って書いて。
Dim ku As Long
って書いて。
って書いて。
Dim cnt As Long
って書いて。
For cnt = 2 To 11
って書いて。
mn = Range(“B” & cnt).Value
って書いて。
..って、していくんですね。
これは、間違ったアプローチです。
こんなことでは、書き上げてみて「動かない!」となったとしても、
細かく動作確認をしていないので、どこがおかしいのか分かりませんし、
ではどうするのかというと、なるべく中のものから作っていきます。
中のものが土台になって。
その上に、For と Next が乗っかってサンドイッチするような感じになります。
伝えにくいですが…。
家を建てるときに、家を建てるときに、左端から順番に作っていく大工さんはいません。
土台を作って、上にだんだんと積み上がっていきます。
それと、同じ感覚だと思っていただければOKです。