Sub mondai0093()
Dim namae
Dim sei
Dim gyo
For gyo = 2 To 11
namae = Range("B" & gyo).Value
If InStr(namae, "/") > 0 Then
sei = InStr(namae, "/")
Range("C" & gyo).Value = Left(namae, sei - 1)
Range("D" & gyo).Value = Mid(namae, sei + 1)
Else
sei = InStr(namae, " ")
Range("C" & gyo).Value = Left(namae, sei - 1)
Range("D" & gyo).Value = Mid(namae, sei + 1)
End If
Next
End Sub
"/"で区切る場合と、半角スペースで区切る場合を 分岐処理で繰り返してしまいました。
sla = InStr(myonam, " ")
If sla = 0 Then
sla = InStr(myonam, "/")
End If
受講生さんの投稿
(投稿ID: 2144)
動画と比べてみると、無駄が多いです(;´・ω・)
"/"で区切る場合と、半角スペースで区切る場合を
分岐処理で繰り返してしまいました。
のように、変数に 「または」の 意味をもたせてIF文を閉じてしまい、
共通の文字列関数処理として書いてもよかったんですね。
練習が必要です。考える方向はざっくり合っていたと思いますが・・・
by gooska
ゲストさんのコメント
(コメントID: 3527)
あとは、発展編1で登場する Replace 関数を使うというのもありです。
もう、ご自身で調べても理解できるかと。よかったら、ネット等て調べてみてください。
受講生さんのコメント
(コメントID: 3528)
さっそく調べて、置換関数だとわかりました。
発展編の内容ということのなので、詳細な質問は控えますが、
私が考えた方法は、置換機能を使って一度区切り文字を"/"に統一してから
文字の分割処理を行う手順です。先にこれをしてしまえば、分岐処理の手間がなくなります。
しかし、もし先生が他の方法で使う手段を念頭に置いていたのでしたら、
「別の使い道がある」とだけおっしゃってください。
後日の宿題として考えますから(笑)
by gooska
>受講生 さん:
>
>あとは、発展編1で登場する Replace 関数を使うというのもありです。
>もう、ご自身で調べても理解できるかと。よかったら、ネット等て調べてみてください。
>
ゲストさんのコメント
(コメントID: 3529)
>私が考えた方法は、置換機能を使って一度区切り文字を"/"に統一してから
>文字の分割処理を行う手順です。先にこれをしてしまえば、分岐処理の手間がなくなります。
そんな感じです。
「区切り文字として全角、半角のスペースが混在している」といったときに、「まずは、全角スペースを半角になおした状態の文字列を作り、あとはそれを処理」とか、そういう使い方よくしますね。
>しかし、もし先生が他の方法で使う手段を念頭に置いていたのでしたら、
>「別の使い道がある」とだけおっしゃってください。
>後日の宿題として考えますから(笑)
いやいや、そうおっしゃらずにw
細かいことのご質問も、どうぞ遠慮無く。本質的な概念みたいなところは説明大変なので「詳しくは発展編へ」と案内することはありますが。