Sub test0004_ogawa() '変数kouで「鉄筋/5F部分/6階建」で1つ目のスラッシュを確認 Dim kou '変数takasaで「鉄筋/5F部分/6階建」で2つ目のスラッシュを確認 Dim takasa '変数kaiで「鉄筋/5F部分/6階建」で真ん中の「階」の部分を確認 Dim kai '変数iで繰り返し処理 Dim i
For i = 2 To 51 '↓ for ... next の中身は一段右へ。そして、セルの値を取得/設定する箇所では .Value をつける kou = InStr(Range("D" & i).Value, "/") takasa = InStr(kou + 1, Range("D" & i).Value, "/") kai = Mid(Range("D" & i).Value, kou + 1, takasa - kou - 1) Range("J" & i).Value = Left(Range("D" & i).Value, kou - 1) Range("K" & i).Value = kai '可読性のため、 J, K, L列に順番に値が入るようにした。 Range("L" & i).Value = Mid(Range("D" & i).Value, takasa + 1) Next End Sub
受講生さんの投稿
(投稿ID: 3038) 添付ファイルのダウンロード権限がありません
大変お忙しい中申し訳ありませんが、
基礎講座にKISO.03のマンションリストについてプログラムを作成させて戴きました。この内容について質問したくメール致しました。
プログラムを添付させて戴きました。宜しくお願い致します。
受講生さんのコメント
(コメントID: 4502)
小川です。
諸般事情があり、お返事、大変遅くなってしまいました。もうしわけありません。
以下、簡単ですが、コメントいたします。
[1] 今の段階で動くプログラムを書ければすばらしいです
[2] コードについては書式の面でコメントしたい点があります
[3] 基礎編フォローアップで詳しく解説していますので、そちらも参照いただければと思います
[1] 今の段階で動くプログラムを書ければすばらしいです
まずは、動くプログラムを自力でかけたことがすばらしいです。
特に、この課題は、受講生の方にも、「難しい」というコメントをもらうことが多いものなので。
演習問題をどんどん解いて、さらに自信をつけつつ先に進んでください。
エクセルマクロ・VBA基礎編フォローアップ
https://forum.pc5bai.com/lesson/course/27
[2] コードについては書式の面でコメントしたい点があります
以下のとおりに修正案を提示します。
Sub test0004_ogawa()
'変数kouで「鉄筋/5F部分/6階建」で1つ目のスラッシュを確認
Dim kou
'変数takasaで「鉄筋/5F部分/6階建」で2つ目のスラッシュを確認
Dim takasa
'変数kaiで「鉄筋/5F部分/6階建」で真ん中の「階」の部分を確認
Dim kai
'変数iで繰り返し処理
Dim i
For i = 2 To 51 '↓ for ... next の中身は一段右へ。そして、セルの値を取得/設定する箇所では .Value をつける
kou = InStr(Range("D" & i).Value, "/")
takasa = InStr(kou + 1, Range("D" & i).Value, "/")
kai = Mid(Range("D" & i).Value, kou + 1, takasa - kou - 1)
Range("J" & i).Value = Left(Range("D" & i).Value, kou - 1)
Range("K" & i).Value = kai '可読性のため、 J, K, L列に順番に値が入るようにした。
Range("L" & i).Value = Mid(Range("D" & i).Value, takasa + 1)
Next
End Sub
.value をつけることについては、以下の記事が参考になるかもしれません(技術的なところまで理解するには、発展編1レベルの知識が必要になりますが..ニュアンスだけでも掴んでいただければと)。
○「セルの値」を指定するとき、.Value は省略してよいものか? – Excelマクロ・VBA
http://www.exvba.com/blog/?p=2183
[3] 基礎編フォローアップで詳しく解説していますので、そちらも参照いただければと思います
基礎編フォローアップでの、以下の一連の解説、コメントやりとりもご参照ください。
文字列を加工してデータ転記する(その1)
https://forum.pc5bai.com/lesson/page/147
文字列を加工してデータ転記する(その2)
https://forum.pc5bai.com/lesson/page/148
文字列の一部を取り出す(応用例)
https://forum.pc5bai.com/lesson/page/155
まずは、以上のとおりです。
どうぞよろしくお願いいたします。
> 基礎講座を受講している中山と申します。
> 大変お忙しい中申し訳ありませんが、
> 基礎講座にKISO.03のマンションリストについてプログラムを作成させて戴きました。この内容について質問したくメール致しました。
> プログラムを添付させて戴きました。宜しくお願い致します。
受講生さんのコメント
(コメントID: 4504)
追記です。
Range("D" & i).Value についてはおっしゃっているとおり、複数回登場するので、事前にその値を変数に格納したほうがよりよいかと思います。
> 基礎講座を受講している中山と申します。
> 大変お忙しい中申し訳ありませんが、
> 基礎講座にKISO.03のマンションリストについてプログラムを作成させて戴きました。この内容について質問したくメール致しました。
> プログラムを添付させて戴きました。宜しくお願い致します。