VBA 100本ノックNo1~5
お題と回答
#VBA100ノック 1本目
— エクセルの神髄 (@yamaoka_ss) 2020年10月19日
「Sheet1」のA1:C5のセル範囲を、「Sheet2」のA1:C5にコピーしてください。
値も数式も書式も全てコピーしてください。
ただしSelectメソッドは使用禁止
※行高と列幅の設定はしなくて良い。
Sub ノック1本目() Sheet1.Range("A1:C5").Copy Sheet2.Range("A1").PasteSpecial End Sub
#VBA100本ノック 2本目
— エクセルの神髄 (@yamaoka_ss) 2020年10月20日
「Sheet1」のA1:C5のセル範囲を、「Sheet2」のA1:C5にコピーしてください。
数式は消して値でコピー、書式もコピーしてください。
※書式は「セルの書式設定」で設定可能なもの(ロックは除く)。
入力規則やメモ(旧コメント)は書式ではありません。
「ふりがな」は任意で
Sub ノック2本目() Sheet1.Range("A1:C5").Copy Sheet2.Range("A1").PasteSpecial (xlPasteValuesAndNumberFormats) End Sub
#VBA100本ノック 3本目
— エクセルの神髄 (@yamaoka_ss) 2020年10月21日
画像のように1行目に見出し、A列に№が入っています。
№の行数およびデータ行数は毎回変化します。
この表の見出し(1行目)と№(A列)を残して、データ部分のみ値を消去してください。
※シートはアクティブシート pic.twitter.com/uXrvsihbHD
Sub ノック3本目() ActiveSheet.Range(Cells(2, 2), Cells(Rows.Count, Columns.Count)).ClearContents End Sub
#VBA100本ノック 4本目
— エクセルの神髄 (@yamaoka_ss) 2020年10月22日
画像のように1行目に見出し、A列に№が入っています。
この表範囲の一部には計算式が入っています。
(画像の最下行とD列には数式が入っています。)
データ行数は毎回変化します。
見出し行とA列№と計算式は残し、定数値だけを消去してください。
※画像ならB2:C11を消去 pic.twitter.com/kIe4Jns164
Sub ノック4本目() ActiveSheet.Range(cells(2, 2), cells(Rows.Count - 1, Columns.Count - 1)).ClearContents End Sub
#VBA100本ノック 5本目
— エクセルの神髄 (@yamaoka_ss) 2020年10月23日
画像のようにB2から始まる表があります。
B列×C列を計算した値をD列に入れ、通貨\のカンマ編集で表示してください。
ただしB列またはC列が空欄の場合は空欄表示にしてください。
例.D2にはB3×C3の計算結果の値を「\234,099」で表示、D5は空欄
※ブック・シートは任意 pic.twitter.com/zRBSVikFXL
Sub ノック5本目() With ActiveSheet Dim c As Long: c = .cells(Rows.Count, 2).End(xlUp).Row Dim i As Long For i = 3 To c If Not (.cells(i, 2).Value = "" Or .cells(i, 3).Value = "") Then .cells(i, 4).Value = .cells(i, 2).Value * .cells(i, 3).Value .cells(i, 4).NumberFormat = "\\#,##0" End If Next End With End Sub
感想と振り返り
賞味30分。
5本目について最初にFormat関数を使ってしまったことで文字列扱いになってしまい、手間取った。
基本的なもので難しい操作とかはないけど、Rangeクラスのプロパティとメソッドがうろ覚えで全然使い切れていないと実感。
精進あるのみ。