VBA100本ノック13本目を動画で解説してみました。Excelの神髄さんの模範解答はコチラ
問題
#VBA100本ノック 13本目
選択セル(Selection:複数範囲あり)の文字列に「注意」という文字があった場合は、その「注意」の文字だけを”赤の太字”に設定してください。
セル以外(図形等)が選択されている場合は何もせずに正常終了するようにしてください。

動画の流れ・解答
■考えた流れ
0:00 冒頭、問題確認
1:19 選択した範囲を一セルずつ処理
3:14 セルの中の文字を一文字ずつ処理
6:28 文字が「注意」の時だけ赤く太文字にする
※動画内での回答
Sub ノック13本目()
Dim rng As Range
Dim i As Long
Dim 文字数 As Long
For Each rng In Selection
文字数 = Len(rng.Value)
For i = 1 To 文字数 - 1
If Mid(rng.Value, i, 2) = "注意" Then
rng.Characters(i, 2).Font.Color = vbRed
rng.Characters(i, 2).Font.Bold = True
End If
Next
Next
End Sub
セル以外を選択していた場合、処理を抜けるコードは模範解答を見てくれ!!

セルの中の文字を
ループしなきゃいけない問題ですね!!

一括で置換すりゃいいじゃん!

そういうことじゃねえんだわ…
選択した範囲を一セルずつ処理
よし!じゃあまずは!!
11本目の復習!
選択しているセルを一セルずつループさせていこう!!!

※選択セル っていうのは、”Selection”でOKだ!!
但しセル以外にも、図形やらなんやらが選択されていた場合も、
Selectionでその図形が指定されちゃうから注意だな!

一旦お試しで、rngのInterior.Colorを赤にしてみると…

セルの中の文字を一文字ずつ処理
うし!!お次!!
セルをループさせたら、更にその中で、セルの中の文字を1文字ずつループさせていくぞ!
まずはセルの中の文字数を求めて(Len関数)、
その後For NextでループすればOKだな!

文字数が求められたら…↓For Next!

そして!!セルの中の文字を個別で変更したい場合は…
Charactersプロパティってのを変更してくれ!!

引数は、(何文字目から,何文字)って感じ!
↓この場合は、i文字目から1文字!
つまり、1文字ずつ処理していくって感じになるな!

文字が「注意」の時だけ赤く太文字にする
よし!じゃあ最後だ!!!
文字が「注意」かどうか判定していくぞ!
まずさっきとの違いは、最後の文字までループするか、しないか!!

“注意”って2文字だから、最終文字の一つ前までループに変更だ!

ほんで同じく、Charactersプロパティで買える文字数も、2文字に変更!

よし!お次は…
注意って文字を判定して、分岐するコードを入れればOK!!
これには「Mid関数さん」を使うといいぞ!!

最後、注意の文字が判定できたら、太文字にするコードを付け加えて完成!!

実行結果↓

オツカレサマデシタ!

お疲れさマントヒヒ!

お疲れさまでした!
あとがたり
おはこんばんちは。うp主です。
VBA100本ノック、13本目の解説となります。
実は12本目と13本目でだいぶ時間空きました!
あっという間に花粉の季節~
この間、何があったかと言うと…
最近流行りの!!
ChatGPTさんやら…NotionAIさんやら…
その辺の動画を作ってました…
いや~、あいつらマジでヤバいですからね。
こんな…VBAをちょこちょこ解説してる意味あるのかな~と思ってしまうレベル…wwマジで。
こんなクソブログよりNotionAIさんが10秒で書いた記事のほうが読まれてるんやろな~
実はこのブログを書いてる意味も、他の人のためになるって言うよりかは、
自分の思考整理のためにやってるのが理由として一番強いんですわ…。
だけど…ChatGPTとかがあったら…正直思考整理とかしなくても
都度GPTさんに聞けばいいしね…
なんて時代…
とま、そんなこんなですが、のんびりとブログは続けていこうかなと思ってはいる!!!
月1ぐらいになるかもしれんけどね!!
最後までご視聴ありがとうございました!
コメント