エクセルVBA、この2つ覚えれば大体のことはできる。
繰り返しの処理と最終行取得で、最初はOK!
初心者のうちは、どう動かせばいいのかイメージが湧いてこないと思います。
私の事務職10年やってきた経験から、「どこからどこまでの範囲を処理するか」を明確にしておくことが大事だと言えます。
つまり、最終行を取得するコードと繰り返し処理の書き方が分かれば、あとはIF句を使って自分のやりたいように条件分岐する。
これだけで大体はOKになる。
最終行を取得するコード
Lline = Worksheets("シート名").Cells(Rows.Count, 1).End(xlUp).Row
Llineという変数に。1列目の最終行の値を代入します。
使用例:以下のように、A列の132行目までデータが入力されています。これの最終行を取得してみます。(シート名は「リスト」)
最終行を取得するコード。実行後にmsgboxが出現。
Sub 最終行取得() Lline = Worksheets("リスト").Cells(Rows.Count, 1).End(xlUp).Row MsgBox "最終行は:" & Lline & "です。" End Sub
実行結果。
変数Llineに最終行が取得できました。あとは1~Llineまでの値に対して、ループ処理で処理をします。
繰り返し処理 For 変数 = 1 TO Lline
繰り返しの処理をする際の構文は、「For 変数 = 1 TO Lline Next」です。
ここでは、A列の文字に文字列"ckb_"と、"txt_" ”_数量”、"txt_" ”_金額”という文字列を加えたものを、別シートに書き出します。
繰り返しのコード
Sub オブジェクト名生成() string1 = "spn_" string2 = "_数量" string3 = "txt_" string4 = "ckb_" string5 = "_金額" '最終行取得 Lline = Worksheets("リスト").Cells(Rows.Count, 1).End(xlUp).Row 'オブジェクト名作成処理 Write_IX = 1 For i = 1 To Lline Expense = Worksheets("リスト").Cells(i, 1) 'チェックボックス Generate_Code1 = string4 & Expense '数量 Generate_Code2 = string3 & Expense & string2 Generate_Code3 = string1 & Expense & string2 '金額 Generate_Code4 = string3 & Expense & string5 Generate_Code5 = string1 & Expense & string5 'sheetに転記する。 Worksheets("オブジェクト名生成").Cells(Write_IX, 1) = Generate_Code1 Worksheets("オブジェクト名生成").Cells(Write_IX, 2) = Generate_Code2 Worksheets("オブジェクト名生成").Cells(Write_IX, 3) = Generate_Code3 Worksheets("オブジェクト名生成").Cells(Write_IX, 4) = Generate_Code4 Worksheets("オブジェクト名生成").Cells(Write_IX, 5) = Generate_Code5 Write_IX = Write_IX + 1 Next MsgBox "end" End Sub
処理結果。(オブジェクトSheetに作成される。)
このように、リストSheetのA列の文字列に、"txt_" などの文字を加えたものを、オブジェクトSheetに作成しました。
最終行の取得、繰り返しの処理。この2つが分かれば、中身のデータに対して処理したいことを実現できます。
あとは、IF句でこういう場合はどうするという処理を加えれば、いろんなことができます。