VBA100本ノック 4本目の投稿です。Excelの神髄さんの模範解答はコチラ
問題
#VBA100本ノック 4本目
画像のように1行目に見出し、A列に№が入っています。
この表範囲の一部には計算式が入っています。
(画像の最下行とD列には数式が入っています。)
データ行数は毎回変化します。
見出し行とA列№と計算式は残し、定数値だけを消去してください。
※画像ならB2:C11を消去
↓この状態のシートを

解答
※動画内での回答
Option Explicit
Sub ノック4本目()
On Error Resume Next
Range("A1").CurrentRegion.Offset(1, 1).SpecialCells(xlCellTypeConstants).ClearContents
End Sub
※神髄さんの解答(これ以外の方法も紹介してくれてます)
Sub 模範解答()
Dim rng As Range
Set rng = Range("A1").CurrentRegion.Offset(1, 1)
On Error Resume Next
rng.SpecialCells(xlCellTypeConstants).ClearContents
End Sub
“変数”についてはまだ難しいかなと思い、あえて1行で書きました。
動画の最後で模範解答と比較し、少しだけですが紹介してみました。

変数を使った方が
スッキリしてる気がしますよね!

いやいや?1行で収まったほうが
確実にスッキリでしょ?

そう思うのは最初だけなんだよ・・・

↑3本目のコードを最大限活用させて解く方法でやってみました。
Range.SpecialCells メソッド
指定した型と値に一致するすべてのセルを表すRangeオブジェクトを返す。
SpecialCells (Type, Value)
動画内では、
Range(“A1”).CurrentRegion.Offset(1,1) ※A1セルの表範囲を一つ右下にずらした範囲の中から、「値(定数)」のセルだけを取得。

VBAで書く以前に、手動での選択方法も紹介しています。
細かい使い方は正直MS公式よりもエクセルの神髄さんのこのページのほうがわかりやすいです。

↑指定した型や値のセルがなかった場合は上記エラーとなります。
On Error ステートメント
動画では On Error Resume Nextのみ紹介。
※エラーを無視してコードを継続してくれます。
但し初心者さんにありがちな、「何でもかんでもOn Error Resume Next」はやめてほいた方がいい。

これから何度もお世話になります。

とりあえずエラーで止まったら、
これ入れとけば解決ってことよね!

いやいや!絶対ダメっす!
エラーが起きてるかどうか
分からないじゃないですか!

え?そういうのはお前らしたっぱが
やればいいんじゃないの?

おいおい…
あとがたり
おはこんばんちは。uぷ主です。
VBA100本ノック、4本目の解説となります。
今回は「値のセルのみ」消去する問題でしたね。
できる限り今までの問題と親和性を持たせる感じにしたかったので、
3本目を少しだけ変えるコードで解答してみました。
今までの内容に加え、
“SpacialCellsメソッド”
“On Errorステートメント”
“変数”
これら三つを新たに紹介しました。
それぞれ軽く触れただけですが、かなり大きな一歩を踏み出せた回になったと思います!
次回も楽しみにしていてクレオパトラ!
最後までご視聴、ご購読ありがとうございました!!
コメント