• ベストアンサー

エクセル・進級処理2

エクセル2002を使用しています。VBA初心者です。 生徒名簿を作成中です。前回質問の内容 (下記URL参照) http://oshiete1.goo.ne.jp/kotaeru.php3?q=789215 に新たに追加する処理をしなければいけなくなりました。 追加の内容は (1)旧1年のデータを抽出し、学年・クラス・番号のそれぞれの列をクリアする。 (2)クリアした部分のうち学年の列のみ"2"の数字を入力する。 (3)旧2年のデータをそれぞれ抽出。・・・以下(1)と同様の処理を行う です。  このうち(1)については、前回質問した内容と同様なので、(2)についてわかる方がいましたら、教えてください。簡単なことなのかもしれませんが、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

Sub test01() d = Range("a1").CurrentRegion.Rows.Count For i = 2 To d Select Case Cells(i, "B") '学年 Case 1 Cells(i, "B") = 2 '学年 Cells(i, "A") = "" '学級番号 Cells(i, "C") = "" 'クラス Cells(i, "D") = "" '出席番号 Case 2 Cells(i, "B") = 3 Cells(i, "A") = "" Cells(i, "C") = "" Cells(i, "D") = "" Case 3 Cells(i, "B") = "" Cells(i, "A") = "" Cells(i, "C") = "" Cells(i, "D") = "" '他の列も=””を追加 End Select Next i End Sub

untokodokkoisyo
質問者

お礼

早速お答えいただきありがとうございました。うまくいったので助かりました。 ただ、ちょっと気になった部分があります。 コードのCase1、Case2は1年を2年に2年を3年にする命令なのかなと見当がつくのですが、Case3はどのように活用されている命令なのかな?という点です。 imogasiさん含め、どなたでも結構ですので教えてください。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

>Case3はどのように活用されている命令なのかな? 3年生の行の内容を列(項目)単位で抹消しています。 いっそのこと、3年生の行が纏まっていれば手作業で抹消する方が早いです。 VBAでDeleteするならFor Nextを最下行から始めるのが良いようです。 テスト例 Sub test01() d = 7 'たまたま7行でテスト For i = d To 1 Step -1 Select Case Cells(i, "B") Case 3 Rows(i).Delete End Select Next i End Sub

untokodokkoisyo
質問者

お礼

丁寧に答えていただきありがとうございました。助かります。